![]() |
Socket.ReceiveBuf umwandeln
Hey Leute!
Hab da ein kleines Problem und zwar habe ich einen Server der Dateien empfangen soll. Es klappt alles, jedoch kommt der inhalt der Datei nicht an weil etwas an dieser Funktion falsch ist
Delphi-Quellcode:
FileData ist hier das übergebene aus Socket.RecieveText
procedure TFilesForm.SetFileData(const FileData: string);
var fs : TFileStream; iLen: Integer; Bfr: Pointer; begin SaveDialog1.FileName := CurFile; if SaveDialog1.Execute then begin iLen := Length(FileData); GetMem(Bfr, iLen); try Socket.ReceiveBuf(Bfr^, iLen); fs.Write(Bfr^, iLen); finally FreeMem(Bfr); end; fs := TFileStream.Create(SaveDialog1.FileName, fmCreate or fmShareDenyWrite); fs.Free; end; end; ich würde nun gerne wissen wie man
Delphi-Quellcode:
umwandeln kann, sodass nicht mit Socket.REceiveBuf gearbeitet wird sondern dass man die variable FileData benutzt.
Socket.ReceiveBuf(Bfr^, iLen);
Ich danke schonmal für die HIlfe Mfg Dr0mFr34K |
Re: Socket.ReceiveBuf umwandeln
1. Du versuchst schon abgeholte Daten erneut abzurufen? Es ist kein Wunder, wenn der Socket keine Daten mehr, die wurden schliesslich schon zuvor von ReceiveText abgeholt.
2. Du beachtest überhaupt nicht den Rückgabewert von ReceiveBuf() 3. Du schreibst in einen Stream über die lokale Variable fs, die nicht initialisiert wurde und definitiv sogar Hinweise vom Compiler bringen. 4. Du legst eine Instanz von TFileStream an, wenn schon alles vorbei ist, um ihn dann wieder sofort freizugeben? Logik dahinter? Glaub mir, der Compiler meint es nur gut mit dir, somit höre auch auf das, was er dir sagt. Und zu deiner Frage: Schreibe den String einfach in den Filestream. Wo genau liegt dein Problem? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz