AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi idftp.onwork wird nicht aufgerufen (Indy 9)
Thema durchsuchen
Ansicht
Themen-Optionen

idftp.onwork wird nicht aufgerufen (Indy 9)

Ein Thema von iGoA · begonnen am 7. Aug 2007 · letzter Beitrag vom 8. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
iGoA

Registriert seit: 9. Jul 2007
69 Beiträge
 
#1

idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 7. Aug 2007, 16:46
Moin!

Ich habe das Problem, dass beim Upload einer Datei auf den FTP-Server das OnWork-Ereignis nie aufgerufen wird. Ich habe schon die Suchfunktion bemüht, aber nur ein ähnliches Problem mit Bezug auf Indy 9 auf 10 -Umstellung gefunden. Ich benutze aber nur die 9er.
Weiß jemand Rat?

Der verwendete Code sieht vom Prinzip her aus, wie in jedem anderen Beispiel, welches ich hier schon gefunden habe:
Delphi-Quellcode:
procedure TfrmFTPAction.idftpWork(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  lblProgress.caption := inttostr(AWorkCount div 1024) +'KB / '+ inttostr(totalbytes div 1024)+'KB';
  application.processmessages;
end;

procedure TfrmFTPAction.idftpWorkBegin(Sender: TObject;
  AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
  totalbytes := AWorkCountMax;
  lblProgress.caption := '0 / '+ inttostr(totalbytes)+'KB';;
  application.processmessages;
end;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 7. Aug 2007, 16:51
naja, du könntest noch über den umweg gehen eine eigene Streamklasse abzuleiten und darin die bytes mit zu zählen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
iGoA

Registriert seit: 9. Jul 2007
69 Beiträge
 
#3

Re: idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 7. Aug 2007, 16:54
Cool, an so einen Workaround habe ich auch schon gedacht. Ich weiß nur gerade nicht wie. Bin noch Indy-N00b. *g*
Kannst Du auf die schnelle einen Tipp abgeben?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 7. Aug 2007, 16:57
hier wurde der ansatz mal umgesetzt (in diesem Beispiel zur Begrenzung der Downloadgeschwindigkeit)
http://www.delphipraxis.net/internal...=686352#686352
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
iGoA

Registriert seit: 9. Jul 2007
69 Beiträge
 
#5

Re: idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 7. Aug 2007, 17:27
Uiuiui, ich bekomms nicht hin. Ich habe nun eine Klasse von TFileStream abgeleitet und die read-methode vererbt. Dort steht bisher nur
Delphi-Quellcode:
function TSpecialFileStream.Read(var Buffer; Count: Integer): Longint;
begin
  inherited read(buffer,count);
end;
weil ich das erstmal testen wollte.
Das löst eine Schutzverletzung aus. Was mach ich denn nun falsch?
Wenn ich die Methode nicht vererbe, also einfach nur ne leere Klasse von TFileStream ableite, funktioniert es.


btw: Nee alternative Lösung wäre mir natürlich auch lieb.
  Mit Zitat antworten Zitat
iGoA

Registriert seit: 9. Jul 2007
69 Beiträge
 
#6

Re: idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 7. Aug 2007, 17:33
MÖÖÖK! Hat sich erledigt. Hatte das "result :=" vergessen.
Forsche nun weiter...


Vielen Dank übrigens schonmal!
  Mit Zitat antworten Zitat
iGoA

Registriert seit: 9. Jul 2007
69 Beiträge
 
#7

Re: idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 8. Aug 2007, 10:37
Wollte vermerken, dass mit dieser Lösung alles klappt. Habe in der Read-Methode meiner eigenen Filestream-Klasse einen Bytecounter mitlaufen lassen und kann so die Fortschrittsanzeige implementieren.

Vielen Dank!
  Mit Zitat antworten Zitat
iGoA

Registriert seit: 9. Jul 2007
69 Beiträge
 
#8

Re: idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 8. Aug 2007, 10:50
Entschuldigung, wenn ich hier so rumspamme, aber ich musste feststellen, dass es doch noch nicht so gut läuft:
Dadurch, dass wir hier eine megaschnelle Verbindung zum Server haben, habe ich nicht bemerkt, daß die Fortschrittsanzeige sich scheinbar nur auf das Einlesen der Datei beschränkt, also nicht wirklich den Upload-Fortschritt anzeigt. Er rasselt nämlich anfangs einmal schnell die Zahlen hoch und lädt dann erst zum Server hoch.

Also die Frage bleibt leider doch aktuell:
Wie bekomme ich das OnWork-Event zum Laufen bzw. welchen Workaround für ne Fortschrittsanzeige gibt es?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 8. Aug 2007, 11:07
eigentlich sollte es so implementiert sein das schrittweise gelesen und übertragen wird. (also nicht erst der gesamte Stream gelesen und danach erst übertragen wird). Wenn dem nicht so wäre würde die Festplatte erstmal mächtig rasseln wenn man versucht eine mehrere GB große Datei hochzuladen (und dem ist nicht so).

Das kann man besonders gut beobachten wenn man den Destructor überschreibt und da einen Haltepunkt setzt. Der Stream wird dann auch erst nach Abschluss der Übertragung frei gegeben.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
iGoA

Registriert seit: 9. Jul 2007
69 Beiträge
 
#10

Re: idftp.onwork wird nicht aufgerufen (Indy 9)

  Alt 8. Aug 2007, 11:15
Hier sieht´s aber definitiv danach aus: Festplatte rödelt fix und die KBytes zählen viel zu schnell hoch. Dateigröße aufm Server bleibt die ganze Zeit 0. Bis er mit dem Einlesen durch ist. Dann steigt die Größe aufm Server erst.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 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