![]() |
Laufschrift hängt
Hi
Hab mal ne Frage zu meiner laufschrift. Und zwar lade ich auf einer Form Bilder nacheinander in ein Image und zwar so
Delphi-Quellcode:
dabei läuft unter dem Bild eine Laufschrift mit der Komponente vom Jens Schumann hier im Forum.
procedure TForm4.Timer2Timer(Sender: TObject);
begin if FileListBox1.Items.Count > 0 then begin if index > FileListBox1.Items.Count -1 then index:= 0; //index auf "O" setzen FileListbox1.Selected[index]:= true; //Aktuellen index makieren bild:= Lowercase(ExtractFileExt(Bilddat + FileListBox1.Items[index])); if (bild = '.jpg') then //Pfad + .jpg begin // Laden der Bilder Image1.Picture.LoadFromFile(Bilddat + FileListBox1.Items[index]); Form3.Image1.Picture:= Image1.Picture;// Kopieren der Bilder auf Form3 end; inc(index); //Index +1 Label6.Caption:= 'Bild '+ IntToStr(index)+' von '+ IntToStr(FileListBox1.Items.Count); Form3.Label2.Caption:= 'Bild '+ IntToStr(index)+' von '+ IntToStr(FileListBox1.Items.Count); end else begin if MessageDlgPos('Es sind keine Bilder vorhanden ' +'',mtInformation,[mbok],0,260,200) = mrok then Timer2.Enabled:= false; end; end; jetzt habe ich das Problem immer wenn ein neues Bild geladen wird bleibt die Laufschrift kurz stehen und läuft dann wieder weiter wie kann ich das verhindern?? Danke schonmal Gruss Sascha |
Re: Laufschrift hängt
Verhindern kannst du das, in dem du Threads verwendest.
Wenn der rechner mit dem abarbeiten einer aufgabe beschäftigt ist müssen alle anderen aufgaben im selben thread warten. |
Re: Laufschrift hängt
Funktioniert das auch mit dem Timer habe mal gehört das der Timer nicht Thread fähig ist kenn mich nicht so aus
|
Re: Laufschrift hängt
Lass den Timer weg. Erstell im Thread nen Delay: siehe Codelib
|
Re: Laufschrift hängt
Ooops
Den Thread bekomm ich bestimmt hin aber was ist das wie arbeitet das ding den |
Re: Laufschrift hängt
Wer? Der Thread?
Schau dir mal das Tutorial von Luckie an: ![]() |
Re: Laufschrift hängt
Naja aber meine frage ist immer noch nicht beantwortet ghet das mit dem teimer oder nicht
Kann ich es so machen das ich meinen obigen code in eine Funktion setze diese in einen Thread reinpacke und das ganze in einem timer laufen lasse oder wie könnte ich mir das vorstellen |
Re: Laufschrift hängt
Mein Vorschlag ohne Thread. Hast du dies schon versucht?
Delphi-Quellcode:
Bei mir hing auch schon mal eine Laufschrift, hiermit wurde der Fehler behoben.
procedure TForm1.FormCreate(Sender: TObject);
begin Form1.DoubleBuffered := True; end; MFG Lorenz |
Re: Laufschrift hängt
Ja hab ich auch schon wie gesagt benutze jetzt die komponente vom jens ist sehr gut hat auch viele möglichkeiten
Ich denke es liegt halt am Laden der Bilder das die Laufschrift immer für den moment des lade vorgangs hängen bleibt. Ich weis jetzt halt nur nicht wegen den Timer ob ich es in einen Thread reinsetzen kann oder nicht |
Re: Laufschrift hängt
Musst du die Bilder denn unbedingt während der Animation laden? Kannst du sie nicht im Voraus laden?
|
Re: Laufschrift hängt
Die sollen einfach nacheinander geladen werden so wie bei einer dia show
|
Re: Laufschrift hängt
Wenn du einen Timer verwendest, bleibt er für die Zeit des Ladens mal kurz stehen. Slebst wenn dein Code innderhalb des timer in einm anderen Thread läuft, der Timer tut dies nicht!
|
Re: Laufschrift hängt
??? hä verstehe ich jetzt nicht ganz also bleibt es beim timer stehen hat noch nie einer dieses Problem gehabt
|
Re: Laufschrift hängt
ah jetzt hab ichs gerafft war anscheiend den einen tag zu müde.
also wie könnte ich es lösen das es beim laden nicht mehr hängt wenn es mit dem timer nicht geht |
Re: Laufschrift hängt
Die Festplatte ist eine der langsamsten Komponenten eines PC. Wenn du die Bilder immer wieder von der Festplatte lädst dauert das ewig. Lade die Bilder bei Programmstart in den Arbeitsspeicher und lade die Bilder dann von dort. Oder lade das Bild innerhalb eines Threads von der Festplatte und packe es dann syncronisiert in die Darstellungskomponente.
|
Re: Laufschrift hängt
Das mit dem Thread wollte ich ja versuchen aber wie du ja oben im code siehst müsste ich dan den Thread auch wieder im timer reinsetzen und das geht doch nicht oder?
|
Re: Laufschrift hängt
doch, wer sollte dich davon abhalten im OnTimer einen Thread zu erzeugen? Allerdings ist es quatsch.
Du kannst auch einfach im Thread ständig prüfen ob es wieder zeit ist:
Delphi-Quellcode:
llastRun := GetTickCount;
repeat lTime := GetTickCount(); if (llastRun + 5000 < lTime) then begin //DoWhatYouWant (load picture and syncronize to show it) llastRun := lTime; end; sleep(50); //um die CPU-Last gering zu halten, wir müssen ja die Schelife nicht übermäßig oft durchlaufen until Self.Terminated; |
Re: Laufschrift hängt
könnte ich das ungefähr so machen habe keine anhnung von thread
den code hatte wir mal in der schule angeschnitten
Delphi-Quellcode:
function lauf() :integer;
var x :integer; begin müsste hir das laden der fils rein???? end; procedure TForm1.Button2Click(Sender: TObject); Var ThreadID :Dword; begin CreateThread(nil, 0, addr(lauf), nil, 0, ThreadID); // win Api Funktion end; |
Re: Laufschrift hängt
Zitat:
|
Re: Laufschrift hängt
Zitat:
![]() Dadurch sparst du dir einen Timer. Siehe dazu ![]() Zitat:
Im Falle das dort DWort steht kannst du Cardinal verwenden ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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