Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
Delphi 7 Enterprise
|
AW: Problem mit FastCode und CopyMemory
11. Mär 2013, 10:29
Verwechselst Du da nicht sizeof
und length
?
Soweit ich weiß, funktioniert length
immer wie gewünscht.
Gruß
K-H
Length( 'Text' )
ergibt - egal ob Unicode oder nicht - immer 4
.
Den benötigten Speicher berechnet man aber sicher mit Length( 'Text' ) * SizeOf( Char )
, denn der ist bei nicht Unicode 4
und als Unicode 8
Also müsste ich so den Speicher reservieren?
Delphi-Quellcode:
function SetClipText(szText: string): Boolean;
var
pData: DWORD;
dwSize: DWORD;
begin;
Result := FALSE;
OpenClipBoard(0);
try
EmptyClipboard;
if Length(szText) > 0 then begin;
dwSize := Length(szText) * SizeOf(Char);
pData := GlobalAlloc(MEM_COMMIT, dwSize);
try
CopyMemory(POINTER(pData), PChar(szText), dwSize);
Result := (SetClipBoardData(CF_TEXT, pData) <> 0);
except
GlobalFree(pData);
raise;
end;
end;
finally
CloseClipBoard;
end;
end;
|