AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Überforderte For-Schleife oder was?

Ein Thema von Andreas L. · begonnen am 5. Aug 2004 · letzter Beitrag vom 6. Aug 2004
 
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Überforderte For-Schleife oder was?

  Alt 5. Aug 2004, 14:00
Wenn ich das richtig verstehe, willst du so ne Art Diashow machen, richtig?

Kanns mir nich hundertprozentig erklären, aber denke, der Fehler könnte daran liegen, daß du bei jedem Aufruf von onTimer ALLE (Also z.B jede Sekunde ALLE Bilder nacheinander. Das macht dann bei 10 Bildern schon 1 Bild alle 100ms) Bilder nacheinander darstellst. Warhscheinlich kommt da Delphi nicht mit. Aber warum das Programm ohne Fehlermeldung abstürzt?! Kein Plan!
Versuchs evtl mal über nen Zähler, der bei jedem Aufruf von onTimer hochgezählt wird. Und dann schreibst du eben
Image1.Picture.LoadFromFile(listbox1.Items.Strings[counter]); Ohne die For-Schleife.

Vielleicht geht das an dem vorbei, was du willst. Vielleicht willst du ja ALLE Bilder jede Sekunde (oder eben alle 2,3,... Sekunden, je nach Angabe) nacheinander durchlaufen. Aber das is jetzt das einzige, was mir direkt aufgefallen is.

Werds jetzt gleich bei mir mal ausprobieren obs klappt.

//Edit:
Was mir grad aufgefallen is: Die Anweisung
if Path[Length(Path)] <> '\then Path := Path + '\'; kannst dir einfacher gestalten. Dafür gibts
Path := IncludeTrailingPathDelimiter[Path]; Mann, bin ich doof! Is doch klar, warum das "abstürzt"! Du hast ja "close" geschrieben. Und Delphi wartet net, bis dein Timer alle Bilder durchlaufen hat. Mach mal das close im ButtonClick weg und schreib die TimerFunktion um wie folgt:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
Begin
  If Counter <= ListBox1.Items.Count - 1 Then
  Begin
    Form1.Caption := IntToStr(Counter);
    Image1.Picture.LoadFromFile(listbox1.Items.Strings[Counter]);
    inc(Counter);
  End
  Else
  Begin
    Timer1.Enabled := false;
    close;
  End;
End;
Den Counter würd ich mir global deklarieren und vor dem Setzen von Enabled auf true auch bitte auf 0 setzten. Ich weiß, da ham manche Probleme mit, ich würds aber trotzdem machen. Kannst aber theoretisch auch den Timer1.Tag dafür benutzen.

Ach ja: Ich bekomm beim Laden von JPGs und GIFs ne Fehlermeldung. Hab noch nie zur Laufzeit Bilder in ne TImage geladen, deswegen kenn ich mich damit nich aus. Aber kanns sein, daß man solche Bilder erst in BMP umwandeln muß?
Naja, aber mit BMPs gehts bei mir jetzt.
Axel Sefranek
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 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-2025 by Thomas Breitkreuz