0

ユニットを使用する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
  • コンパイルして実行します。
  • スタート→実行
  • 次に入力します(ここからコピーしないでください!)

גדכלחילדגחכי

次に貼り付けます。

éâãëìçéìãâçëé

4

1 に答える 1

0

TClipboardオブジェクトを渡すTBitmap.Assign()と、クリップボードからのみ読み取られます。クリップボードに何も書き込んだり、クリップボードの内容を変更したりすることはありません。

したがって、問題はあなたが示したコードにはありません。私が今考えられる唯一の可能性は、最初にビットマップをクリップボードに保存したアプリケーションが遅延レンダリングを有効にして保存した可能性が高く、レンダリングされたビットマップを保存するときに間違った方法でクリップボードを更新しているということですTBitmap.Assigns()。そのためのクリップボード。

于 2012-06-06T19:55:16.067 に答える