Fortschrittsanzeige auf der Konsole

Für allgemeine Fragen zur Programmierung mit PureBasic.
Ara
Beiträge: 35
Registriert: 29.08.2004 13:40

Fortschrittsanzeige auf der Konsole

Beitrag von Ara »

Ich habe heute einmal versucht, eine Fortschrittsanzeige auf der Konsole zu erstellen.
Es funktioniert fast so, wie es soll. Wenn man jedoch die Fenster Größe verkleinert, zerstört es mir die komplette Anzeige.
Es soll unter der Eingabe auf der Konsole Positioniert sein, also keine feste Position.
Es soll lauffähig unter Windows und Linux sein.
In den Compiler-Optionen habe ich bei Executable-Format: Console ausgewählt.

Hier ein kleines Beispiel, damit ihr seht, was ich meine.

Code: Alles auswählen

OpenConsole("Console")

b.l = 9856
c.l = 0
d.l = 25  ; Breite der Fortschrittsanzeige
StartTime.q = ElapsedMilliseconds()

For a = 1 To b
  c = (b-a)*(ElapsedMilliseconds() - StartTime)/1000/a
  Print(#CR$ + LSet("[", d*a/b+1, "■") + RSet("]", d-d*a/b+1, ".") + "   " + RSet(StrD(100*a/b, 2), 6) + "%   Rest: " + RSet(Str(Hour(c)), 2, "0")+":"+RSet(Str(Minute(c)), 2, "0")+":"+RSet(Str(Second(c)), 2, "0") + "   ")
  Delay(1)
Next
Delay(3000)
Mit EnableGraphicalConsole(1) wird der Zeilenumbruch zwar unterbunden, #CR$ setzt aber nicht mehr den Text an den Anfang der Zeile.

Für jede Hilfe bin ich Dankbar
Thomas
Win11 Pro
PureBasic 6.10 LTS
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

Re: Fortschrittsanzeige auf der Konsole

Beitrag von es_91 »

Wer grafische Konsolen verwendet sollte immer die Cursorposition puffern und ConsoleLocate verwenden!
Antworten