Guten Tag,
ich habe mal eine Frage

(mal wieder^^)
ich würde gerne eine Art Schleife programmieren, die allerdings nur dann durchläuft, wenn dadurch nichts anderes "behindert" wird..
Also wenn ich also eine For to schleife mache (von 1 bis 1 mio zB.) dann würde sich das prog, ja normalerweise aufhängen... also habe ich mir gedacht ich setze ein delay(1) dazwischen... das funktioniert auch, allerdings wenn ich jetz auf einen Button drücke, so ist diese prozedure erheblich verlangsamt...
ist es also möglich eine Schleife (z.B. auch nicht-endene schleifen zB while x=x do...) nur dann durchlaufen zu lassen, dass das Programm
- immer reagiert (nicht abstürzt)
- keine unnötige Verlangsamung da ist (von anderen Prozeduren etc)
- trotzdem schnell.. (bzw. die schleife schnell durchläuft, also keine unnötige Wartezeit wie delay(1))
Möglichkeiten: -timer (bin ich aber gegen, da es dadruch zu lange dauert...)
- jede prozedure so aufbauen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure blabla(Parameter: typ); begin eineProzlaeuft := true; eineProzlaeuft := false; end;
for C:=1 to 1000000 do if not eineProzlaeuft then begin end; |
Es geht um folgendes:
es sollen im Hintergrund records eingeladen werden, jedoch können das ziemlich viele sein, und dieser werden erst später benutzt...
wenn man nun auf "laden" geht, dann hängt sich das Programm für ein paar Minuten auf, ist dann aber fertig.. wenn man lange das Programm offen hat, sollen die records schon eingeladen sein, so dass man auf laden geht und man dann gar nichts mehr einladen brauch...
wie man das immer Hintergrund ausführt etc. ist ja alles kein Problem, aber so ausführen dass das Programm sich
- nicht aufhängt
und trotzdem eingeladen wird habe ich noch nicht vernünftig hintegkriegt