![]() |
Problem mit Datei versenden!
Hallo,
Ich hatte in dem Forum ein Tutorial gefunde, welches ich gleich mal ausprobiert habe! ![]() Ich hab versucht das in mein Programm hinzu zufügen, allerdings will es bei mir nicht so richtig funktionieren.. Hier ist mal mein Code, vielleicht findet ihr ja den Fehler. SERVER:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
VAR sClientMsg : String; FileReceiver : TFileReceiver; begin TRY sClientMsg := AThread.Connection.ReadLn(#$A,5500); FileReceiver := TFileReceiver.Create(AThread,sClientMsg); TRY IF FileReceiver.ServerMsgOK then BEGIN IF FileReceiver.Start then AThread.Connection.WriteLn('FILEOK') ELSE AThread.Connection.WriteLn('FILEERROR'); END; FINALLY FileReceiver.free; END; EXCEPT AThread.Connection.Disconnect; END; end; CLIENT:
Delphi-Quellcode:
Die Variable fs und iFileSize habe ich unter private deklariert
procedure TForm1.Button3Click(Sender: TObject);
VAR tmpMS : TMemoryStream; iTmpSize : Longint; iNextSize : Longint; bError : Boolean; sMsgToSvr : String; iSendTime : Cardinal; iTimeDiff : Cardinal; BytesperSek : Double; sCmd : String; begin idTCPClient1.Disconnect; idTCPClient1.Host := Edit3.Text; idTCPClient1.Port := StrToIntDef(Edit4.Text,1563); TRY idTCPClient1.Connect(timeout); EXCEPT MessageDlg('Es konnte keine Verbindung zum Server: '+Edit3.Text+' auf Port: '+Edit4.Text+' hergestellt werden!', mtError,[mbOK],0); END; if idTCPClient1.Connected then begin sMsgToSvr := inttostr(fs.Size)+cSplitChar+ExtractFileName(Edit5.Text); idTCPClient1.WriteLn(sMsgToSvr); tmpMS := TMemoryStream.Create; TRY iFileSize := fs.Size; iTmpSize := 0; bError := false; Fs.Position := 0; WHILE (iTmpSize < iFileSize) and (not bError) DO BEGIN tmpMS.Clear; Application.ProcessMessages; iSendTime := GetTickCount; TRY iNextSize := iFileSize - iTmpSize; IF iNextSize > cFileSplitSize then iNextSize := cFileSplitSize; iTmpSize := iTmpSize + tmpMS.CopyFrom(fs,iNextSize); idTCPClient1.OpenWriteBuffer; idTCPClient1.WriteStream(tmpMS,true,true); idTCPClient1.CloseWriteBuffer; iTimeDiff := GetTickCount - iSendTime; ProgressBar1.Position := Round(iTmpSize/iFileSize*100); ProgressBar1.Repaint; TRY BytesperSek := Round(tmpMS.Size/1024/iTimeDiff*1000); EXCEPT BytesperSek := 0; END; Label16.Caption := FormatFloat('0.00',BytesperSek)+' KB/Sek'; Label16.Repaint; EXCEPT bError := true; END; END; TRY sCmd := idTCPClient1.ReadLn(#$A,7500); EXCEPT sCmd := 'TimeOut-Error'; END; idTCPClient1.Disconnect; FINALLY tmpMS.Clear; FreeAndNil(tmpMS); END; IF (not bError) and (sCmd = 'FILEOK') THEN Messagedlg('Datei wurde erfolgreich versendet!',mtInformation,[mbok],0) else Messagedlg('Fehler beim versenden der Datei!',mtError,[mbok],0) end; end; Das Compilieren funktioniert einwandfrei, allerdings wenn ich die Datei senden will, kommt die Nachricht: "Fehler beim Versenden der Datei"! Eigentlich ist es ja fast das selbe wie im Tutorial und das funktioniert. Oder liegt es an der FileReceiver.pas/FileReceiver.dcu ? Danke schonmal für die Hilfe.. mfg. Monty |
Re: Problem mit Datei versenden!
Bitte verwende die Delphi anstatt der Code Tags.
Danke! |
Re: Problem mit Datei versenden!
Warum wird andauernd tmpMS gelöscht (Zeile 38 )? :gruebel:
Gruß, ManuMF |
Re: Problem mit Datei versenden!
Warum weis ich ehrlich gesagt auch nicht, aber wenn ich es auskommentiere, geht es immer noch nicht =(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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