使用本机Clipbrd
时,有人知道会发生文本损坏吗?
访问位图后
bitmap.Assign(Clipboard);
剪贴板中的文本似乎已损坏。使用英语它可以正常工作,但是它会变成奇怪的字符,例如
ã
这是一个“开放的错误”吗?
有没有办法处理这个问题并将剪贴板恢复到正常操作而无需重新启动计算机?
编码
Clipboard.Open;
bitmap.Assign(Clipboard);
Clipboard.Close;
结果相同。
我的猜测是它会通过编码到达某个地方。
他们对剪贴板的破坏是为了软件之外的用户体验。剪贴板无法用于非英语语言。
任何图片提取后,即使关闭Delphi或软件,剪贴板也无法传输非英文。
我正在测试:
大日本帝国</p>
复制粘贴结果:
?????
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Clipbrd, StdCtrls;
type
TForm4 = class(TForm)
img1: TImage;
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.btn1Click(Sender: TObject);
var
bitmap : TBitmap;
begin
bitmap := TBitmap.Create;
bitmap.Assign(Clipboard);
img1.picture.Assign(bitmap);
FreeAndNil(bitmap);
end;
end.
dfm:
object Form4: TForm4
Left = 0
Top = 0
Caption = 'Form4'
ClientHeight = 282
ClientWidth = 418
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object img1: TImage
Left = 168
Top = 64
Width = 105
Height = 105
end
object btn1: TButton
Left = 184
Top = 232
Width = 75
Height = 25
Caption = 'btn1'
TabOrder = 0
OnClick = btn1Click
end
end
- 编译并执行。
- 开始→运行
- 然后输入(不要从这里复制!)
雅加达
然后粘贴回来,你会得到
éâãëìçéìãâçëé