Seite 2 von 3
Re: Wert für Progressbargadget
Verfasst: 04.07.2015 15:51
von ts-soft
Ob FTPProgress() auch quad Unterstützt kann ich nicht sagen, müßte mal jemand ausprobieren. Aber ansonsten verwendest Du
double in Deinem Programm, was natürlich verkehrt ist. Stell mal das ganze Programm auf quad um und Probier es aus.
Hab es beim ersten mal nicht erwähnt, weil es war ja nicht die Frage und dachte, Du kommst selber auf den Fehler.
Gruß
Thomas
Re: Wert für Progressbargadget
Verfasst: 04.07.2015 16:03
von schleicher
Es soll eine 10 GB Datei übertragen werden.
Für die Progressbar rechne ich den Wert vom FTPProgress() in Prozent um. Doch FTPProgress() liefert nur den korrekten Wert bis Ende von long erreicht ist, danach geht der Wert von FTPProgress ins minus. Bekomme ich vielleicht den Wert für die bereits
empfangenen Bytes(oder KB) über eine andere Möglichkeit ?
Re: Wert für Progressbargadget
Verfasst: 04.07.2015 16:21
von schleicher
ts-soft hat geschrieben: Aber ansonsten verwendest Du
double in Deinem Programm, was natürlich verkehrt ist.
Hatte ich schon geändert auf long. Habe nun auf quad umgestellt, aber FTPProgress() unterstützt scheinbar kein quad nur long.
Gibs noch eine andere Möglichkeit ,an den Wert für die bereits übertragenen Bytes oder kb zu gelangen ?
Re: Wert für Progressbargadget
Verfasst: 04.07.2015 20:55
von Sicro
Es besteht die Möglichkeit, das Long in ein Quad zu übertragen und den negativen Wert wieder zu einem positivem Werten hochzurechnen, aber dann kommst du leider immer noch nicht zu 10 GiB, sondern nur zu 3,99 GiB.
Code: Alles auswählen
#SignedLong_MaxValue = 2147483647 ; 2.147.483.647
Define.l FTPProgress = #SignedLong_MaxValue+#SignedLong_MaxValue-2 ; = 4.294.967.292
Define.q value = FTPProgress ; FTPProgress(FTP_Connection)
Select value
Case #PB_FTP_Started
Case #PB_FTP_Finished
Case #PB_FTP_Error
Default
If value < 0
value + #SignedLong_MaxValue
EndIf
EndSelect
Debug value
Vielleicht gibt die 64-Bit-Version von PB ein Quad-Wert zurück.
Re: Wert für Progressbargadget
Verfasst: 12.07.2015 11:25
von schleicher
Gute Idee. Ich habe das Problem nun anders gelöst.
Wenn FTPProgress( den Maximalwert von 2147483647 ereicht dann läuft er wieder rückwärts auf null
Diesen Minuswert entferne ich das minus und errechne damit den Restwert
Code: Alles auswählen
maxwert.l = 2147483647
If Left(Str(FTPProgress(#ftp), 1)) = "-" ; Minuswert wird gesucht
istwertminus.l = FTPProgress(#ftp) ; Minuswert in Variable speichern
else
progresswerttotal.q =FTPProgress(#ftp)
Endif
istwertplus.l = Val(RemoveString(Str(istwertminus.l), "-", 1, 1)) ; Minuszeichen wird entfernt
progresswert.l= maxwert-istwertplus
progresswerttotal.q = progresswerttotal + progresswert ; Gesamtwert zur Weiterverarbeitung für Progressbar
Das ganze läuft in einer Schleife . Wenn FTPProgress(#ftp) wieder ins plus läuft wird es dann wieder zu progresswerttotal.l hinzugerechnet
Für Vorschläge, wie man das ganze vereinfachen kann wäre ich dankbar.
Re: Wert für Progressbargadget
Verfasst: 12.07.2015 12:00
von HeX0R
schleicher hat geschrieben:Für Vorschläge, wie man das ganze vereinfachen kann wäre ich dankbar.
Ich würde vorschlagen das als Bug-Report, oder zumindest als Feature-Request im englischen Forum zu posten.
Weil meinese Erachtens sollte FTPProgress() ein Quad zurückgeben.
Sicro hat geschrieben:Vielleicht gibt die 64-Bit-Version von PB ein Quad-Wert zurück.
Nein, ich habe es eben getestet.
Hatte auch die Hoffnung, dass Integer genommen wurde, is aber nicht.
Re: Wert für Progressbargadget
Verfasst: 12.07.2015 12:35
von schleicher
HeX0R hat geschrieben:
Weil meinese Erachtens sollte FTPProgress() ein Quad zurückgeben.
Das hätte die Sache wesentlich leichter gemacht.
Re: Wert für Progressbargadget
Verfasst: 12.07.2015 12:45
von Vera
Idee:
könnte man bei solchen Dateigrößen nicht auf FTPProgress() verzichten und stattdessen den aktuellen FileSize(fileonhdd$) auf der HD abfragen?
Re: Wert für Progressbargadget
Verfasst: 12.07.2015 21:51
von schleicher
Die Frage ist, ob das andauernde Nachfragen nach der Größe auf der Hdd nicht zuviel CPU Power frisst, die widerum der Übertragungsgeschwindigkeit zu Lasten geht.
Ist das so oder irre ich mich ?
Re: Wert für Progressbargadget
Verfasst: 12.07.2015 22:35
von RSBasic
Wenn du im Thread ein Delay() benutzt, dann nicht.