Schleifenberechnungsdauer mit Progressbar anzeigen
-
@HEZ Warum bitte schön sollte man ein int nicht einfach einem AnsiString zuweisen? Wenn die Formatierung egal ist, ist es die einfachste Lösung. Die Überladung des Zuweisungsoperators von AnsiString gibt es nicht umsonst.
Ansonsten stimme ich euch natürlich zu.
@5er!al
Warum setzt du denn max und min von Progressbar in der Schleife immer wieder neu. Einmal reicht doch. Das wurde oben aber auch schon mal erwähnt.
Und was soll diese while(!stop) Schleife. Die wird bei dir exakt einmal ausgeführt und ist somit also sinnlos.
-
Es gibt böse, böse Leute die Tragen absichtlich (oder unabsichtlich) einen nicht numerischen Wert in das Edit ein... und dann kracht es. Also sollte man das ganze noch in try catch() setzen, oder ToIntDef() verwenden.
Außerdem verbrät man doch nur unnötig CPU-Zeit, wenn man da permanent Konvertierungen, Zuweisungen und Berechnungen durchführt, die absolut überflüssig sind.Andererseits verstehe ich den Sinn und Zweck des stop-Flags nicht?
int eingabe1=Edit1->Text.ToIntDef(0); int eingabe2=Edit2->Text.ToIntDef(0); ProgressBar1->Min=0; ProgressBar1->Max=eingabe1; ProgressBar1->Position=0; for (int j=1;j<=eingabe2;j++) { Label2->Caption=j; for (int i=0;i<=eingabe1;i++) { Label1->Caption=i; ProgressBar1->Position=i + 1; Application->ProcessMessages(); } }ich würde jedoch die Schreibweise
Label1->Caption = AnsiString(i);bevorzugen. Ist zwar mehr Tipparbeit, dafür finde ich es aber lesbarer (ist meine persönliche Meinung - bleibt jedem selbst überlassen
)Ach so, das ProcessMessages() kann nicht entfernt werden, da sonst die Labels nicht aktualisiert werden und möglicherweise auch die ProgressBar nicht. Allerdings gehört es ans Ende, sonst werden in den Captions die Werte vom vorherigen Durchlauf angzeigt und nicht die vom aktuellen. Je nachdem wieviele Durchläufe es sind, bremst das ApplicationMessages() das Programm aus. Dann setzt man ProgressBar->Max auf 100 und berechnet anhand der Anzahl der Durchläüfe die Position der Progressbar und aktualisiert diese nur, wenn sich der Wert tatsächlich geändert hat. Das gilt natürlich auch für die Anzeige der Captions...
-
try...catch ist meiner Meinung nach nicht notwendig, da das ToIntDef(0) bereits ausreichend die Fehleingaben nach "0" abfängt.
-
F98 schrieb:
try...catch ist meiner Meinung nach nicht notwendig, da das ToIntDef(0) bereits ausreichend die Fehleingaben nach "0" abfängt.
Das war ne OR - , keine AND - Verknüpfung.

-
Äh, ja. Hab ich wieder zu schnell gelesen ... :xmas1:
-
ok ok fang ich mal an:

also:
Braunstein schrieb:
@5er!al
Warum setzt du denn max und min von Progressbar in der Schleife immer wieder neu. Einmal reicht doch. Das wurde oben aber auch schon mal erwähnt.
Und was soll diese while(!stop) Schleife. Die wird bei dir exakt einmal ausgeführt und ist somit also sinnlos.Also zu dem max...lol...ok keine ahnung....!

Aber mit dem Stop kann ich über einen Button (der im Code nicht mit angezeigt war) die Schleife unterbrechen! versteht ihr? Er setzt stop auf true!Und normalerweise benutze ich auch ToIntDef.....aber manchmal vergisst man was zu schreiben

-
@5er1al eine ProgressBar die so lange läuft bis man Stop drückt?
Macht in meinen Augen keinen Sinn. Selbst wenn er das stop = true entfernt und
in einen Knopf legt, dann fängt die ProgressBar immer wieder von vorne an.
Sie hat also ihren Zweck verfehlt.Die ProgressBar soll doch anzeigen wann eine Aktion beendet ist. Wenn sie immer
wieder von vorne anfängt hat sie keinerlei Aussage. Da verwendet man dann lieber
ein anderes Control dafür (Alive Control).
-
Acidmrp schrieb:
Da verwendet man dann lieber
ein anderes Control dafür (Alive Control).Bitte was?
-
Hmm...wie erklär ichs am besten!
Überleg
Naja nehmen wir mal an....das programm soll mehrere Sachen hintereinander machen....und jede einzelne Sache soll per Progressbar einzeln angezeigt werden wann sie fertig ist...verstehst?
Und der Stop Button is einfach dafür da, wenn der Benutzer nicht mehr möchte das das Programm das macht (weil er zB was falsches eingegeben hat,es aber erst später gemerkt hat)....
Und was ist ein Alive Control?
-
Hallo
Und was ist ein Alive Control?
Das ist irgendein Icon, das eine Animation in einer endlosschleife zeigt. Z.b das fliegende Papier in der Kopier-Anzeige des Explorers.
Einfach um dem User zu zeigen : Programm ist Alive.bis bald
akari
-
genau, oder z.B. die Quadrate die Win XP bei der installation rechts unten anzeigt.