AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FTP Indy Komponente, Event OnWork und der Parameter AWorkCount

FTP Indy Komponente, Event OnWork und der Parameter AWorkCount

Ein Thema von daniel775 · begonnen am 22. Okt 2017 · letzter Beitrag vom 22. Okt 2017
Antwort Antwort
daniel775

Registriert seit: 27. Nov 2010
46 Beiträge
 
#1

FTP Indy Komponente, Event OnWork und der Parameter AWorkCount

  Alt 22. Okt 2017, 21:57
Guten Abend,


bin gerade dabei in mein Updatemodul eine Dateiübertragung per FTP bzw. HTTP Protokoll zu integrieren. Irgendwie will mir das Feature mit der Progressbar nicht gelingen.
Genau genommen gibt es zwei Progressbars. Eine für die einzelne Datei die gerade übertragen wird und eine für den Gesamtfortschritt.
Eigentlich ist das was ich nicht hinbekomme ja ein Schönheitsfehler. Meine Progressbar für die Dateien bleibt nach der Übertragung bei 99% stehen und meine Progressbar für den Gesamtfortschritt bei 96%.

Es werden zum Test 5 Dateien per FTP Protokoll vom FTP zu dem meinen Rechner übertragen. Der FTP-Server sitzt im lokalen Netz. Die Dateien haben folgende Größen in Byte:

1.874.053.550
62.230.016
62.634
22.458
1
Summe: 1.936.368.659 Bytes

Um dem ganzen auf die Schliche zu kommen habe ich eine Feldvariable ausserhalb der Prozedur die FBytesLast heisst. Am Ende der IdFTPWork Prozedur speichere ich den aktuellen AWorkCount Stand in diese Variable FBytesLast. Am Anfang der Prozedur werte ich diesen Stand aus mit:

Code:
FLastBytes := (AWorkCount - FLastBytes);
if FShowCnt < 400 then
    memo.Lines.Add(FormatFloat('#,##0', FLastBytes));
Mit den nächsten 400 aufrufen der IdFTPWork Prozedur werden diese übertragenen Bytes in ein Memo geschrieben.

Code:
58
360
4.294.966.992
4.294.967.250
58
360
32.350
29.866
4.294.927.120
4.294.944.839
113
32.654
32.768
32.768
32.768
32.768
32.768
Mit einer der ersten Aufrufe werden 58 Bytes dann 360 Bytes übertragen und irgenwann im Laufe der Übertragungen Konstant 32 Kilobyte. Und jetzt zu meiner Frage die mir warscheinlich die letzten 4% zu den 100% in der Progressbar für den Gesamtfortschritt versauen. Was haben diese Werte in AWorkCount zu suchen? 4.294.966.992, 4.294.967.250, 4.294.927.120, 4.294.944.839

Falls sich jetzt einige Fragen, warum ich nicht in der OnBegin Ereignisprozedur den Wert aus dem Parameter AWorkCountMax übernehme. Weil der Parameter AWorkCountMax leider nur beim Upload > 0 ist. Beim Download muss man umständlich Rekusiv durch die Ordnerstrukturen um mit der Prozedur Size die zu übertragenen Bytes zu ermitteln. Lass mich aber gern eines besseren belehren. Wenn jemand einen Vorschlag hat das zu vereinfachen.

Geändert von daniel775 (22. Okt 2017 um 22:04 Uhr)
  Mit Zitat antworten Zitat
daniel775

Registriert seit: 27. Nov 2010
46 Beiträge
 
#2

AW: FTP Indy Komponente, Event OnWork und der Parameter AWorkCount

  Alt 22. Okt 2017, 22:54
Hat das irgendetwas mit der maximalen Adressierung von meiner FLastBytes Variable (Datentyp Cardinal, 4.294.967.296 Bytes sprich 4 GB) zutun? Wenn ich 4.294.966.992 von 4.294.967.296 Bytes abziehe ist die Differenz 304 Bytes!?!?


Edit:

Ich habe gerade mal den Datentyp von Cardinal auf Integer geändert. Das ist das Ergebnis:


58
360
-304
-46
58
360
32.350
29.866
-40.176
-22.457
113
32.654
32.768
32.768

Die Differenzen beim Datentyp Cardinal drücken sich beim Datentyp Integer ins Negative aus. Den Grund dafür kann ich mir erklären, Cardinal kennt kein unsigned. Aber das erklärt noch immer nicht, warum die Werte überhaupt ins Negative gehen.

Geändert von daniel775 (22. Okt 2017 um 23:34 Uhr) Grund: Neue Erkenntnis
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf