Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Timer - Kann den fehler nicht finden
Waldkauz - Sa 04.07.09 12:57
Titel: Timer - Kann den fehler nicht finden
Hallo
Ich habe ein Problem, und ich kann den Fehler nicht finden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var t:integer=6;
procedure TForm1.Timer1Timer(Sender: TObject); begin t:=t-1; if t=5 then image1.picture.loadfromfile('bild01.jpg'); if t=3 then image1.picture.loadfromfile('bild02.jpg'); if t=2 then image1.picture.loadfromfile('bild03.jpg'); if t=4 then image1.picture.loadfromfile('bild04.jpg'); if t=1 then image1.picture.loadfromfile('bild05.jpg'); if t=0 then t:=6; end; |
Der Timer soll im Abstand von 1 Sekunde (also Timer1.Interval 1000) ein neues Bild ins Image1 laden, à la Diashow.
Das Problem ist, dass immer wieder Bilder übersprungen werden.
Delete - Sa 04.07.09 13:07
Versuch es mal so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var t:integer=6;
procedure TForm1.Timer1Timer(Sender: TObject); begin dec(t); if t = 0 then t := 6 else image1.picture.loadfromfile(Format('%s\bild%.2d.jpg',[ExcludeTrailingPathDelimiter(KompletterPfadzumBild),t])); end; |
Allerdings wird auf diese Weise kein Bild geladen, wenn t in der ersten Zeile 0 wird.
jaenicke - Sa 04.07.09 13:15
Ist das Absicht im Originalquelltext oben, dass die Reihenfolge der Bilddateien anders ist als das Herunterzählen?
Waldkauz hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Timer1Timer(Sender: TObject); begin t:=t-1; if t=5 then image1.picture.loadfromfile('bild01.jpg'); if t=3 then image1.picture.loadfromfile('bild02.jpg'); if t=2 then image1.picture.loadfromfile('bild03.jpg'); if t=4 then image1.picture.loadfromfile('bild04.jpg'); if t=1 then image1.picture.loadfromfile('bild05.jpg'); if t=0 then t:=6; end; | |
R4id - Sa 04.07.09 13:34
Glaube ich nehmlich nicht :D
Blackheart666 - Sa 04.07.09 14:12
Was da nicht wirklich eine Rolle spielt ! :wink:
jaenicke - Sa 04.07.09 14:20
Doch, wenn das den Eindruck verursacht, dass da Bilder "ausgelassen" werden. ;-)
Xentar - Sa 04.07.09 15:29
Relative Dateipfade sind böse und wurden vom Teufel erschaffen :evil: :D
Besser:
Delphi-Quelltext
1:
| image1.picture.loadfromfile(ExtractFilePath(Application.Exename) + 'bild05.jpg'); |
Damit gehst du immer vom Anwendungspfad aus, und nicht vom Arbeitsverzeichnis.
ffgorcky - Sa 04.07.09 16:47
Also ich hätte das ganze eher so geschrieben (also die Bilder dementsprechend anders durchnummeriert):
Delphi-Quelltext
1:
| image1.picture.loadfromfile(ExtractFilePath(Application.Exename)+'\bild0'+IntToStr(t)+'.jpg'); |
Wobei ich immer nicht so ganz weiß, ob die Funktion
ExtractFilePath(Pfad:String):String denn hinter das direkte Mutter-Verzeichnis auch noch ein
\ setzt...
...und solange Du nicht das Arbeitsverzeichnis beim Programmstart (also in der aufrufenden Verknüpfung) anders angibst, brauchst Du dieses ja auch gar nicht extra machen!
Wenn Du aber lieber für jeden Integer-Wert Deiner Variable
t eine eigene Behandlung hast, dann wäre es doch so einfacher:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| t:=t-1; case t of 5: image1.picture.loadfromfile('bild01.jpg'); 4: image1.picture.loadfromfile('bild04.jpg'); 3: image1.picture.loadfromfile('bild02.jpg'); 2: image1.picture.loadfromfile('bild03.jpg'); 1: image1.picture.loadfromfile('bild05.jpg'); 0: t:=6; end; |
Wobei bei dieser Behandlung dann ja das bild05.jpg doppelt so lange angezeigt wird.
jaenicke - Sa 04.07.09 16:49
ffgorcky hat folgendes geschrieben : |
Wobei ich immer nicht so ganz weiß, ob die Funktion ExtractFilePath(Pfad:String):String denn hinter das direkte Mutter-Verzeichnis auch noch ein \ setzt... |
Du hast eins zu viel.
ExtractFilePath fügt eins hinzu am Ende, ExtractFileDir macht das selbe und fügt keins hinzu.
jasocul - Mo 06.07.09 11:29
Ihr seid alle tolle Programmierer, aber vielleicht solltet ihr euch mal auf die eigentliche Frage konzentrieren. :wink:
Mögliche Ursachen für den Fehler:
1. Die Bilder stehen nicht im richtigen Verzeichnis.
2. Die Variable t wird noch woanders verändert.
3. Die Bilder sind so groß, dass das Laden und Anzeigen länger dauert, als die Timer-Laufzeit.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!