![]() |
Über Indy versandte Dateien lassen sich nicht öffnen
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich habe ein Programm geschrieben, mit dem man Dateien von einem Indy-Tcp-Client an einen Indy-Tcp-Server senden kann. Sender:
Delphi-Quellcode:
Empfänger:
procedure TForm2.SendButtonClick(Sender: TObject);
Var FStream:TFileStream; begin FStream := TFileStream.Create(filename, fmOpenRead); with IdTcpClient1 do begin Connect; Socket.Write(FStream); Disconnect; end; end;
Delphi-Quellcode:
Das Problem: Die versendeten Dateien lassen sich nicht öffnen! Ich habe ein Bitmap-Bild und eine .exe Datei verschickt. Kann mir jemand sagen was das Problem ist?
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
Var FStream: TFileStream; SizeOfIncomingStream: Integer; begin FStream := TFileStream.Create(filename, fmCreate); with AContext.Connection do begin SizeOfIncomingStream := Socket.ReadInteger(true); Socket.ReadStream(fstream, SizeOfIncomingStream, false); Disconnect; end; end; Die Fehlermeldungen: |
AW: Über Indy versandte Dateien lassen sich nicht öffnen
.. vergleiche mal die Größe der Originaldatei mit der übertragenen Datei?
Du trennst die Verbindung nachdem ein oder mehrere Packete empfangen wurden. Bist Du dir sicher das dann die gesamte Datei übertragen wurde? Grüße Klaus |
AW: Über Indy versandte Dateien lassen sich nicht öffnen
Die Dateigröße ist die selbe, außerdem laufen beide Programme auf einem Computer.
|
AW: Über Indy versandte Dateien lassen sich nicht öffnen
Zeig mal den Code, mit dem du die Datei tatsächlich liest/schreibst.
|
AW: Über Indy versandte Dateien lassen sich nicht öffnen
Passiert das nicht in dem Code den ich schon geschickt habe?
Im Programmcode wird sonst nur der Server aktiviert. |
AW: Über Indy versandte Dateien lassen sich nicht öffnen
|
AW: Über Indy versandte Dateien lassen sich nicht öffnen
Hinter
Delphi-Quellcode:
bitte mal mit
FStream := TFileStream.Create(filename, fmCreate);
Delphi-Quellcode:
probieren.
FStream.Position := 0;
|
AW: Über Indy versandte Dateien lassen sich nicht öffnen
1. Warum liest du in deinem Server erst einen Integer raus wie lang der Stream angeblich sein soll? Den schreibst du in deinen Button1Click doch auch nicht rein! Einfach weglassen und alles lesen
2. Mach den FileStream auch wieder zu am Schluss!
Delphi-Quellcode:
procedure TForm10.Button1Click(Sender: TObject);
var FStream:TFileStream; begin FStream := TFileStream.Create(fileIn, fmOpenRead); try IdTcpClient1.Connect(); IdTCPClient1.Socket.Write(FStream); IdTCPClient1.Disconnect(); finally FStream.Destroy(); end; end; procedure TForm10.IdTCPServer1Execute(AContext: TIdContext); const fileOut = 'x:\zipfile_out.zip'; Var FStream: TFileStream; begin FStream := TFileStream.Create(fileOut, fmCreate); try AContext.Connection.Socket.ReadStream(fstream); AContext.Connection.Disconnect(); finally FStream.Destroy(); end; end; So funktioniert das bei mir ohne Probleme... |
AW: Über Indy versandte Dateien lassen sich nicht öffnen
Also mein Code sieht jetzt so aus:
Sender:
Delphi-Quellcode:
Empfänger:
procedure TForm2.Button1Click(Sender: TObject);
Var FStream:TFileStream; begin FStream := TFileStream.Create(filename, fmOpenRead); with IdTcpClient1 do begin Connect; Socket.Write(FStream); Disconnect; end; FStream.Destroy; end;
Delphi-Quellcode:
Die Dateien lassen sich aber immernoch nicht öffnen. Ich habe die Dateien auch mit HxD-HexEditor geöffnet und sie sind unterschiedlich. Außerdem habe ich mal eine .txt-Datei verschickt, da hat alles perfekt funktioniert.
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
Var FStream: TFileStream; begin FStream := TFileStream.Create(filename, fmCreate); FStream.Position := 0; with AContext.Connection do begin Socket.ReadStream(fstream); Disconnect; end; FStream.Destroy; end; |
AW: Über Indy versandte Dateien lassen sich nicht öffnen
Komisch. Hast du eine Beispiel-Datei die nicht funktioniert? Und vielleicht einmal dein komplettes Projekt? Nicht dass sich da noch etwas drin versteckt das man nicht vermutet...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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