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]