2012-06-06 3 views
0

단위 Clipbrd를 사용하는 사람은 텍스트 손상을 알 수 있습니까? 클립br 델파이 손상

클립 보드에서 비트 맵을

bitmap.Assign(Clipboard); 

텍스트를 액세스 한 후 손상된 것으로 보인다. 영어로 잘 작동하지만 이상한 문자로 바뀝니다. ã

"오픈 버그"에 대해 알고 있습니까?

컴퓨터를 다시 시작하지 않고도이 작업을 처리하고 클립 보드를 정상 작동 상태로 되돌릴 방법이 있습니까?

업데이트 : 코드에 동일한 결과

Clipboard.Open; 
bitmap.Assign(Clipboard); 
Clipboard.Close; 

결과. 내 생각 엔 인코딩으로 어딘가에갑니다.

update2 : 클립 보드의 손상은 소프트웨어 외부의 사용자 경험을위한 것입니다. 클립 보드는 영어가 아닌 언어에서는 사용할 수 없습니다. 사진을 추출한 후 클립 보드는 Delphi가 종료 된 후에도 영어 이외의 언어를 전송할 수 없습니다.

大 日本 帝國

복사 및 붙여 넣기 결과 :와

테스트

????? 




    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 

컴파일하고 실행한다. 시작으로 이동 -> 다음

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

다시 붙여 (! 여기에서 복사하지 마십시오) 입력 실행 당신이 얻을 것이다

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

+0

Clipboard.Clear를 사용해 보셨습니까? 또는 Clipboard.Open;/Clipboard.Close; ? – ertx

+0

사용자가 자신의 용도로 클립 보드를 사용하고 싶다면 ~을 처음 입수 할 때만 클립 보드를 얻을 수 있습니까? 텍스트가 명확하지 않은 변형이 있습니다. – none

+4

문제를 재현 할 수있는 완전한 프로그램과 지침을 표시하십시오.그렇지 않으면 이것은 질문이 아닙니다. –

답변

0

TClipboard 개체를 TBitmap.Assign()에게 전달 클립 보드에서 읽는 것만으로 클립 보드에 아무 것도 쓰지 않거나 다른 방법으로 클립 보드의 내용을 변경하지 않습니다. 그래서 문제는 당신이 보여준 코드에 없습니다. 지금 생각할 수있는 유일한 가능성은 지연 렌더링이 활성화 된 상태에서 클립 보드에 저장된 비트 맵을 저장 한 앱이 무엇이든 상관없이 TBitmap.Assigns()이 요청할 때 현재 렌더링 된 비트 맵을 저장할 때 잘못된 방법으로 클립 보드를 업데이트한다는 것입니다. 그것을위한 클립 보드.

+0

비트 맵은 printscreen과 함께 저장됩니다. 버그를 재현하려고 했습니까? – none