![]() |
Re: For-do Schleife mit Sprung
Zitat:
|
Re: For-do Schleife mit Sprung
Beide Schleifen sind wichtig, vllt solltet ihr euch mal klar machen was der Unterschied zwischen einer "Kopf" und ner "Fuß" gesteuerten Schleife ist ;)
|
Re: For-do Schleife mit Sprung
[offtopic] das Gegenteil von "Kopf" gesteuert ist "Schwanz" gesteuert [/offtopic]
Mein Beitrag mit "goil! dann..." war ironisch gemeint. Das nur nochmal für alle, denen das nicht ganz klar war. Fakt ist, dass man ausgehen von einer while-Schleife die beiden anderen relativ schnell geschrieben hat: bei der repeat-Schleife:
Delphi-Quellcode:
bei der for schleife:
anweisung;
while ISTrue do anweisung;
Delphi-Quellcode:
aber wer will das schon immer machen. Also doch gut, dass es alle drei gibt!
while soOft >= 0 do
begin dec(soOft); anweisung; end; |
Re: For-do Schleife mit Sprung
Zitat:
|
Re: For-do Schleife mit Sprung
Ich denke, ich werde mich für den Code von himitsu entscheiden, der ist für mich(auf Grund meiner Erfahrung und Faulheit) der Beste.
Danke für die vielen Antworten!. :thuimb: |
Re: For-do Schleife mit Sprung
noch ein tipp: du musst nichtmal bis "maxZahl div 2" durchgehen. "ceil(sqrt(maxZahl))" reicht!
|
Re: For-do Schleife mit Sprung
Die Anweisung kann ja schnell mal 10 Sekunden (und meistens noch drüber) dauern. Damit ich Fortschritte sehen kann, habe ich mir was ausgedacht:
Ich nehme mir die Startzeit und die Endzeit und führe dann SecondsBetween(...) aus. Allerdings ist eine Sekunde bei solchen größenverhältnissen nicht gerade genau. Aber mit einem Timer(der dann aller 10 ms den Zeitwert erhöht) kann ich's nicht machen, weil der ja seine Anweisungen erst nach der Beendigung der Primzahlsuche fortsetzt. Habt ihr noch 'ne Idee? |
Re: For-do Schleife mit Sprung
wie wird der Fortschritt angezeiht? Ruf in der Schleife mal die Refresh-Methode der entsprechenden Komponent auf. Oder pack das in einen Thread und lass dir vom Thread eine Message an dein fenster schicken bei jedem Fortschritt.
|
Re: For-do Schleife mit Sprung
Also der Fortschritt wird über eine TProgressBar angezeigt. Das habe ich schon ziemlich optimiert. Aber darüber sehe ich ja nicht, wie lange es von Zahl X bis Zahl Y gesucht hat. Ich habe ja schon oben meine momentane Zeitmessmethode beschrieben. Aber wie kann ich es Zehntelsekundengenau machen?
Wie meinst du das, mit der Refresh-Methode? Soll ich einen Timer mit der Aufgabe "Benötigte Zeit := Benötigte Zeit + 0,01" und den dann mit der Refresh-Methode aufrufen? |
Re: For-do Schleife mit Sprung
Luckie meinte, dass wenn du innerhalb deiner Methode den Progress erhöhst, man das trotzdem erst sehen wird, wenn deine Methode fertig abgearbeitet ist. Um das zu verhindern, und zwischendurch die ANzeige auf den aktuellen Stand, sollte man irgendwas von wegen Repaint/Refresh/Update einbauen [aber nicht ZU OFT, sonst wirds merklich langsamer]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz