![]() |
Indy Datentransfer
Nunja, da es ja nun Probleme mit den normalen Sockets gab, bin ich auf Indy umgestiegen.
Ich benutze den Code: ![]() Allerdings wollte ich nun auch ne Progressbar einbauen in OnWork des Clients, aber es wird nicht ausgeführt? Jemand ne Idee wieso oder wie ich anders ne Art Status einbau? |
Re: Indy Datentransfer
Hi,
erstmal muss ich zu dem oben genanntem Code folgenden Hinweis geben : !!! Der funktioniert nur bei Daten bis ca. 80 MB, sonst ist der WriteBuffer zu klein und er kann auch keinen Buffer mehr allocieren !!! !!! Aber ca. 50 MB wird das schreiben in den Buffer schon sehr langsam !!!! Deshalb empfehle ich jedem der größere Daten übertragen will, die Daten in kleinere Pakete aufzuteilen. Ich persönlich verwende 20 KB Pakete und kann dann auch im Server eine schöne Progressbar bauen. Beim Client sollte das OnWork Ereignis eintreten !!!!!!!!!!!!!!!! Gruß Data |
Re: Indy Datentransfer
hi leutz
hat mittlerweile jemand eine lösung für das prob mit der progressbar gefunden ich rkeigs leider auch net hin *schäm* hat jemand zufällig nen code?? cu andré |
Re: Indy Datentransfer
Hi,
poste mal Deinen Sourcecode vom Client !! Einmal den Teil des Senden und Dein OnWork Ereignis !! Wie gesagt ich habe das mit ner Progressbar am laufen, egal welchen Weg !! Gruß Data |
Re: Indy Datentransfer
Delphi-Quellcode:
die onwork/begin/end ereignisse
procedure Tfile_send.TCPClientWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer); begin progress.Position := AWorkCount; l_out.Caption := inttostr(AWorkCount); end; procedure Tfile_send.TCPClientWorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin progress.Max := AWorkCountMax; //l_out.Caption := inttostr(AworkCountMax); end; procedure Tfile_send.TCPClientWorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin //progress.Position := 0; end; und mein client:
Delphi-Quellcode:
ich hoffe du kannst mir helfen
procedure Tfile_send.pb_sendClick(Sender: TObject);
var fs: tfilestream; begin TCPClient.Host := e_host.Text; TCPClient.Port := strtoint(e_port.Text); if not Open.Execute then exit; //erstmal besorgt man sich den Pfad der Datei, z.B. mit dem Standard Dialog TOpenDialog with TCPClient do begin fs := TFileStream.Create(Open.FileName, fmOpenRead or fmShareDenyWrite); //Datei in FileStream einlesen Connect; //und Verbindung herstellen try OpenWriteBuffer; //stellt sicher, dass alle Daten versendet werden try WriteLn(Open.FileName); WriteStream(fs, true, true, 0); {das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird} CloseWriteBuffer; except CancelWriteBuffer; raise; end; finally Disconnect; fs.Free; end; end; cu andré |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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