Status anzeige in Echtzeit anzeigen-fehler?

Hallo!

ich habe zwei schleifen.

i1 :=0 to tliste.Count-1
innerhalb dieser schleife wird nochmal eine schleife
i2 :=i1 +1 to tliste.count-1 ausgefuehrt. ausgeführt.
die maximale anzahl des progressbars hab ich auf
N*N-1/2:
((tliste.Count-1)*(tliste.Count-2) div 2);
gesetzt.
die erhöung der Position im Progressbar hab ich dan auf
progressbar1.Position + (tliste.Count -(i_pos-1));
gesetzt nach jedem durchlauf der 2. schleife.
leider functioniert das nicht.
es klappt weder, das der status dan voll ist, wenn die schleifen durchlaufen sind, noch klappt es, das der status gleichmässig zunimmt(da die schleifen durchläufe nicht bei jedem durchlauf von der länge her identisch sind.(i2 :=i1+1)!!

wo ist mein fehler??

Schönen Dank s

Hallo!

Sei n = TListe.Count

Die Gesamtzahl der Durchläufe in der inneren Schleife ist

n + (n-1) + (n-2) + … + (n-n)

Die Summe aufgelöst ergeben sich 1/2 * n * (n+1) Durchläufe.

Setze Progressbar.max = (n*(n+1)) div 2 und zähle Progressbar.Position IN jedem Durchlauf der inneren Schleife um eins hoch. So sollte es funktionieren (wenn ich die Frage richtig verstanden habe).

Wenn du die Prograssbar nur NACH jedem Durchlauf der inneren Schleife aktualisieren willst, mußt dur die Position dort um
n-i1 erhöhen.

Bitteschön

Jochen

Du meinst nicht „Echtzeit“, sondern nur die korrekte Fortschrittsanzeige. Der Begriff „Echtzeit“ bezeichnet meiner Kenntnis nach die Tatsache, daß die Geschwindigkeit der Datenverarbeitung signifikant schneller ist als Änderung der Daten und die Verarbeitung augenblicklich geschieht, also ohne Verzögerung zur Datenentstehung. Windows an sich ist schon kein Echtzeit-System, weil es die Verzögerungsfreie Verarbeitung von Daten nicht sicherstellt. Echtzeitsysteme sind von Bedeutung bei der Steuerung von Maschinen, Prozessen, Fahrzeugen usw.

Wenn die Änderung der Daten sehr langsam ist, kann man auch auf dem guten alten C64 Echtzeitdatenverarbeitung betreiben…

Gruß
Jochen

Hallo!

Setze Progressbar.max = (n*(n+1)) div 2 und zähle
Progressbar.Position IN jedem Durchlauf der inneren Schleife
um eins hoch. So sollte es funktionieren (wenn ich die Frage
richtig verstanden habe).

>>>>>>nein,da in der inneren for-schleife ein break ist das unter bestimmten umständen ausgeführt wird.
nun,ich bin zu der einsicht gekommen das ich die tatsächliche laufzeit(das meinte ich mit echzeit:smile:nicht so ohne weiteres für das programm in der status anzeige ausgeben kann,ich hab es jetzt ganz einfach gemacht, und progressbar1.max :tliste.count;

und dan bei jedem durchlauf die position um eins inkrementiert.

danke für die mühe!
Schönen tag noch
s…