Einzelnen Beitrag anzeigen

DerKapitalist

Registriert seit: 25. Dez 2002
37 Beiträge
 
#1

PChar geht nicht, aber array of char tuts wunderbar?

  Alt 26. Dez 2002, 01:58
hallo,

ich muss einem TWinSocketStream Objekt fuer seine Read methode einen buffer übergeben. Es funktioniert alles, nur sobald ich als Bufer nichtmehr array of char sondern einen pchar verwende, bekomme ich ein exception vom Socket, dass ich versuche in einen falschen speicherbereich zu schreiben. schaut ihr euch das mal an?

Delphi-Quellcode:
function TClientConnection.GetData: string;
var
// temp: array[0..1024 - 1] of char; this version would work
  temp: PChar; // So why doesn't this work?
  data: string;
begin
// FillChar(temp, SizeOf(temp), #0);
    temp := StrAlloc(1024 + 1);

    if(SCOPDataStream.WaitForData(C_SocketTimeout) = false) then
    begin
       Self.OnError('Timeout: Netzwerk- oder Serverprogrammfehler');
    end
    else
    begin
      while (SCOPDataStream.Read(temp,1025) <> 0) do
      begin
        data := data + String(temp);
        FillChar(temp,1025,#0);
        // FillChar(temp, SizeOf(temp),#0);
      end;
      StrDispose(temp); // only needed for pchar
      result := (data);
    end;
end;

achja, wie kann man eigtl. 2 PChars zusammenfügen zu einem? Und werden bei PChars die #0 automatisch an das ende gehängtß

Gruss
[edit=Sakura]Code Tags hinzugefügt[/edit]
  Mit Zitat antworten Zitat