Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Socket.ReceiveBuf umwandeln (https://www.delphipraxis.net/112583-socket-receivebuf-umwandeln.html)

Dr0mFr34K 23. Apr 2008 22:47


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:
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;
FileData ist hier das übergebene aus Socket.RecieveText

ich würde nun gerne wissen wie man

Delphi-Quellcode:
Socket.ReceiveBuf(Bfr^, iLen);
umwandeln kann, sodass nicht mit Socket.REceiveBuf gearbeitet wird sondern dass man die variable FileData benutzt.

Ich danke schonmal für die HIlfe

Mfg Dr0mFr34K

Muetze1 23. Apr 2008 22:51

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 14:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz