Einzelnen Beitrag anzeigen

Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Problem mit FastCode und CopyMemory

  Alt 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;
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat