Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit Datei versenden! (https://www.delphipraxis.net/55084-problem-mit-datei-versenden.html)

monty.ms 16. Okt 2005 18:25


Problem mit Datei versenden!
 
Hallo,

Ich hatte in dem Forum ein Tutorial gefunde, welches ich gleich mal ausprobiert habe!

http://www.delphipraxis.net/internal...ct.php?t=14914

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:
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;
Die Variable fs und iFileSize habe ich unter private deklariert

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

BenjaminH 16. Okt 2005 18:26

Re: Problem mit Datei versenden!
 
Bitte verwende die Delphi anstatt der Code Tags.
Danke!

ManuMF 17. Okt 2005 10:17

Re: Problem mit Datei versenden!
 
Warum wird andauernd tmpMS gelöscht (Zeile 38 )? :gruebel:

Gruß,
ManuMF

monty.ms 17. Okt 2005 17:06

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