Wert für Progressbargadget

Anfängerfragen zum Programmieren mit PureBasic.
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Wert für Progressbargadget

Beitrag von schleicher »

Ich möchte sehr große Dateien über FTP kopieren, aber bei dem Wert für die Progressbar habe ich probleme. Ich habe das so versucht :

Code: Alles auswählen

Global filebytetotal.d ;  Dieser enthält z.B. den Wert 12000000000 

SetGadgetAttribute(#Progressbar,  #PB_ProgressBar_Maximum, filebytetotal)  ; setzt aber nicht diesen hohen Wert !
Wie müsste ich das ändern ?
Purebasic 5.51
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 »

Der höchste Wert ist: 2147483647 (long).
Du solltest lieber mit Prozent arbeiten!
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 »

Gute Idee . Danke
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 »

Anzeige fnktioniert nun einwandfrei.
Große Dateien (über 2 Gb) werden nun kopiert, aber das Programmfenster friert ab ca. 30 % ein bis die Übertragung
zu Ende ist. CPU-Auslastung liegt aber nur bei 3-4 %. Übertragen tue ich mit ReceiveFTPFile.
Kann man das verhindern ?
Purebasic 5.51
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Wert für Progressbargadget

Beitrag von Kiffi »

schleicher hat geschrieben:Übertragen tue ich mit ReceiveFTPFile.
Kann man das verhindern ?
indem Du den letzten Parameter von ReceiveFTPFile() (Asynchronous-Flag) auf #True setzt. Mit FTPProgress() kannst Du den Status Deines Downloads abfragen.

Mehr dazu hier und hier.

Grüße ... Peter
a²+b²=mc²
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 »

Kiffi hat geschrieben:indem Du den letzten Parameter von ReceiveFTPFile() (Asynchronous-Flag) auf #True setzt.
Das habe ich so schon drin, dadurch bekomme ich die Werte für die Progressbar. Aber das verhindert nicht das einfrieren des Programmfensters bei ca. 30 %. Und so kann dann auch die Übertragung nicht abgebrochen werden, weil nichts mehr reagiert.

Noch einen anderen Tip ?
Purebasic 5.51
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Wert für Progressbargadget

Beitrag von NicTheQuick »

Rufst du denn weiterhin '(Wait)WindowEvent()' auf? Falls nicht, ist es logisch, dass das Programm einfriert, weil keine Events mehr verarbeitet werden können.
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Wert für Progressbargadget

Beitrag von Andesdaf »

Ich gehe mal davon aus, dass du FTPProgress() innerhalb einer Schleife mehrfach
abfragst. Dadurch werden die Windowevents nicht mehr verarbeitet, was irgendwann zum
Einfrieren des Fensters führt. Innerhalb deiner Progress-Schleife musst du also ab und zu
die Events abarbeiten, z.B. so:

Code: Alles auswählen

While WindowEvent() : Wend
ist erstmal nicht besonders schön, sollte aber helfen, wenn du während des Übertragungs-
Prozesses auf keine anderen Events reagieren willst.

// Nic war schneller
Win11 x64 | PB 6.20
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 »

NicTheQuick hat geschrieben:Rufst du denn weiterhin '(Wait)WindowEvent()' auf?
Habe nun WindowEvent() eingefügt, sodas es immer am Anfang der Schleife aufgerufen wird und jetzt läufts besser danke.

Neues Problem ist aber , das der höchste Wert bei FTPProgess() scheinbar long ist , brauche aber einen höheren Wert. Geht das ?
Purebasic 5.51
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Wert für Progressbargadget

Beitrag von Kiffi »

schleicher hat geschrieben:Neues Problem ist aber , das der höchste Wert bei FTPProgess() scheinbar long ist , brauche aber einen höheren Wert. Geht das ?
nein. Wie Thomas schon schrieb:
ts-soft hat geschrieben:Der höchste Wert ist: 2147483647 (long).
Du solltest lieber mit Prozent arbeiten!
Grüße ... Peter
a²+b²=mc²
Antworten