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.