Wert für Progressbargadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Wert für Progressbargadget

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: Wert für Progressbargadget

Beitrag 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 ?
Purebasic 5.51
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: Wert für Progressbargadget

Beitrag 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 ?
Purebasic 5.51
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Wert für Progressbargadget

Beitrag 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.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: Wert für Progressbargadget

Beitrag 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.
Purebasic 5.51
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Wert für Progressbargadget

Beitrag 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.
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: Wert für Progressbargadget

Beitrag von schleicher »

HeX0R hat geschrieben: Weil meinese Erachtens sollte FTPProgress() ein Quad zurückgeben.
Das hätte die Sache wesentlich leichter gemacht.
Purebasic 5.51
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Wert für Progressbargadget

Beitrag von Vera »

Idee:
könnte man bei solchen Dateigrößen nicht auf FTPProgress() verzichten und stattdessen den aktuellen FileSize(fileonhdd$) auf der HD abfragen?
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: Wert für Progressbargadget

Beitrag 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 ?
Purebasic 5.51
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Wert für Progressbargadget

Beitrag von RSBasic »

Wenn du im Thread ein Delay() benutzt, dann nicht.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten