Моля, пояснете каква е разликата между предложеното в лина на NDeu и това
procedure StrToClipboard(S:String);
var
W:PWideChar;
H:THandle;
begin
H:=GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE,Length(S)*2+2);
W:=GlobalLock(H);
W:=StringToWideChar(S,W,Length(S)*2+2);
GlobalUnLock(H);
Clipboard.SetAsHandle(CF_UNICODETEXT,H);
end;
Ето го от линка:
{}procedure PutStringIntoClipboard( const Value: string; LocaleID: longint);
// NDeu
var
Size : Integer;
Data : THandle;
DataPtr : Pointer;
begin
if Length( Value) = 0 then exit;
Clipboard.Open;
try
Clipboard.AsText:= Value;
Size:= 4;
Data:= GlobalAlloc( GMEM_MOVEABLE + GMEM_DDESHARE, Size);
try
DataPtr := GlobalLock( Data);
try
Move(LocaleID, DataPtr^, Size);
Clipboard.SetAsHandle(CF_LOCALE, Data);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
raise;
end;
finally
Clipboard.Close;
end;
end;
{http://www.delphikingdom.com/asp/answer.asp?IDAnswer=9740
procedure PutStringIntoClipBoard(const Str: WideString);
var
Size: Integer;
Data: THandle;
DataPtr: Pointer;
begin
Size:=Length(Str);
if Size = 0 then exit;
Size:=Size shl 1 + 2;
Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
try
DataPtr := GlobalLock(Data);
try
Move(Pointer(Str)^, DataPtr^, Size);
Clipboard.SetAsHandle(CF_UNICODETEXT, Data);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
raise;
end;
end;