Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - probleme mit sleep funktion


klausiemausie - Fr 08.05.09 09:32
Titel: probleme mit sleep funktion
folgendes problem: ich möchte 2 bilder laden, aber nicht gleichzeitig sondern hintereinander. also hab ich mir gedacht, lad ich erst das eine, halt das programm kurz an mit slepp(1000) und lade dann das andere. das ganze passiert per button. warum friert das programm ein und lädt danach beide gleichzeitig, obwohl im quelltext das erste bild vorm sleep geladen wird? ist es nicht so dass delphi von oben nach unten arbeitet, also in der reihenfolge wie es im quelltext steht?


Nersgatt - Fr 08.05.09 10:03

Normalerweise brauchst Du kein Sleep. Zeig mal Deinen Quellcode.


Gausi - Fr 08.05.09 10:08

Wahrscheinlich wird die Form nach dem Laden des ersten Bildes nicht aktualisiert. Spiel da mal ein bißchen mit Application.ProcessMessages oder Image1.Repaint/Refresh rum.
Zum Einfrieren: Ja, das ist bei Sleep normal. Das Programm schläft dann eben und reagiert nicht mehr auf Eingaben. Eine Alternative wäre dann Delay [http://www.delphi-library.de/viewtopic.php?t=23225&highlight=delay].


klausiemausie - Fr 08.05.09 10:18

also ich will ja dass sie nacheinander zeitversetzt geladen werden, deswegen will ich halt ne kleine pause zwischen den 2 bilderladenzeilen haben, da ja aufgrund der hohenrechenleistung heutzutage da kein zeitabstand zu merken ist sonst.
hier mein code

Delphi-Quelltext
1:
2:
3:
image1.picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + ('karoass.jpg'));
sleep(1000);
image2.Picture.loadfromfile(extractfilepath(Paramstr(0)) + ('hinten.jpg'));


Nersgatt - Fr 08.05.09 10:23

Setzt mal nach dem ersten image1.picture.LoadFromFile ein Image1.repaint.
Und Sleep lässt deine Anwendung einfrieren, das ist normal. Hier, wie von Gausi vorgeschlagen, mal Delay anschauen. (Siehe Link von Gausi oben)


klausiemausie - Fr 08.05.09 11:38

ok danke hat funktioniert. das mit der sleepfunktion geht schon in ordnung für mein vorhaben.