Hallo,
Ich benutze folgende Funktion um Text in die Zwischenablage zu kopieren:
Delphi-Quellcode:
function SetClipText(szText: string): Boolean;
var
pData: DWORD;
dwSize: DWORD;
begin;
Result := FALSE;
OpenClipBoard(0);
try
EmptyClipboard;
dwSize := Length(szText) + 1;
if dwSize <> 0 then begin;
pData := GlobalAlloc(MEM_COMMIT, dwSize);
try
CopyMemory(POINTER(pData), PChar(szText), dwSize);
if SetClipBoardData(CF_TEXT, pData) <> 0 then
Result := TRUE;
except
GlobalFree(pData);
raise;
end;
end;
finally
CloseClipBoard;
end;
end;
Das funktioniert auch immer Problemlos.
Aufeinmal allerdings nicht mehr, und die Fehlersuche ging los.
Durch das debuggen habe ich dann bemerkt, dass die eingebundene
Unit FastCode dafür verantwortlich ist, dass dort irgendein Problem bei CopyMemory vorliegt.
Nur weil diese Funktion jetzt nicht geht, wollte ich allerdings nicht auf die
FastCode Unit verzichten.
Gibt es also Jemanden der sich mit Assembler besser auskennt als ich, und den Fehler finden kann?
Beim Aufruf von CopyMemory springt er in die
Unit FastMove in die Funktion "Forwards_SSE3_10;". Komischerweise rufe ich an anderen Stellen auch CopyMemory auf, und habe dort allerdings nicht die Probleme.
Kann es vllt. auch sein, das ich ein Fehler bei der Parameterübergabe von CopyMemory habe?
mfg Martin
Edit:
Achso, das Problem äußert sich übrigens darin, dass unter Verwendung von FastCode nichts mehr in die Zwischenablage kopiert wird.