Guten Tag zusammen,
in der Schule behandeln wir gerade Sortieralgorithmen. Ich habe schon mal in mein "Sortierprogramm" zwei Algorithem implementiert, Auswahlsort und Bubblesort. Der User kann eine Zahl angeben, und so viele Zufallszahlen werden im Bereich 0..10000 generiert und in einem Memo ausgegeben. Nach der Wahl der Soriermethode sollen die Zahlen sortiert und in einem zweiten Memo ausgegeben werden.
Das Sortieren klappt perfekt, auch wenn es etwas lange dauert (2000 Zufallszahlen sortieren: 40 sek, bei aktuellem System. Dachte, das wäre eine Sache von ein paar Milisekunden!). Nun wollte ich mein Programm noch verschönern und den Fortschritt der Sortierung mit einem Progressbar anzeigen lassen.
Mein Code sieht so aus (nur Bubblesort, bei Auswahlsort ist das gleiche Problem)
Das Problem: Der Progressbar bewegt sich zwar, aber hängt total hinterher - wenn der Balken voll ist, ist mein Programm noch am Ausgeben der Zahlen, sprich, der Scrollbalken des zweiten Memofeldes schrumpft noch immer, es werden also noch Zahlen reingeschrieben.
Wie kann ich den Progressbar jetzt synchronisieren, sodass er erst dann fertig ist, wenn mein Programm fertig ist?
Edit: *Kopf -> Tisch* Ich hab ja vergessen, progressbar1.max auf zaehler zu setzen. Ich hab noch dran gedacht, dass ich das machen muss, als ich die Idee hatte, und jetzt im Code vergess ichs. Doof!
Dann ist ja diese Frage immerhin geklärt - darf ich dann eine andere stellen? Ich habe extra überall application.processmessages reingetan, damit sich bei vielen Zahlen das Programm nicht so aufhängt. Ich kann das Fenster jetzt also während dem Sortieren nett bewegen, aber Schließen funkioniert nicht. Das Programm wird erst geschlossen, wenn es fertig soriert hat!
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 11.03.2010 um 11:20