![]() |
Timer funktionieren nicht
Hallo Zusammen,
ich habe einen Fehler, dem ich nicht auf die Spur komme. Aus irgendeinem Grund funktioniert die TTimer-Komponenten nicht mehr. Ich habe auf einem Form die Komponente abgelegt und lasse jede Sekunde die Zeit in einem Caption anzeigen. Das funktionierte sehr gut, aber in der aktuelle Version nicht mehr... Auch andere TTimer klappen nicht, auch wenn ich einen neuen auf das Form ziehe. Es ist so, als wären die Disabled. Wenn ich ein neues Projekt aufmache, und dort dasselbe ausprobiere klappt es. Hat schon jemand so ein Verhalten gehabt und vielleicht eine Idee, in welcher Ecke ich gucken muss? Ich habe im Programm nicht gefunden... Vielen Dank Patrick |
AW: Timer funktionieren nicht
Hast Du im OnTimer-Handler einen Haltepunkt gesetzt? Wird der angesprungen? Oder hat Dein Programm vielleicht so viel zu tun, dass die Timer-Message ggf. gar nicht durchkommt? Oder hast Du vielleicht irgendeine vergessene Routine, die alle TTimer-Instanzen disabled? Fragen über Fragen.
|
AW: Timer funktionieren nicht
Hi,
ich habe den Haltepunkt gesetzt, aber er wird gar nicht angesprungen. Eine Procedure, die alle Timer disabled macht keinen Sinn und habe ich auch leider nicht gefunden... Ob das Programm zuviel zu tun hat weiß ich nicht, würde mich aber wundern... Ich habe gerade bemerkt, dass ein Timer doch funktioniert. Gucke mal, ob mich das weiterbringt und melde mich wieder. Patrick |
AW: Timer funktionieren nicht
Das Programm besteht aus "zwei" Fenstern. Darstellen tue ich die mit einem PageControl mit zwei TabSheets. Interessanter Weise entsteht das Problem nur auf einer der beiden Seiten. Wenn ich auf der anderen bin, wird die Zeit in der Statusleiste angezeigt, aktiviere ich das andere, bleibt die Zeit in der gleichen Statuszeile stehen. Die Zeit wäre nicht so ein Problem, aber es gibt noch einen anderen Timer, der dann auch leider stehen bleibt...
|
AW: Timer funktionieren nicht
Ich glaube ohne Code kann man da nicht helfen. Ich glaube auch, dass das zu 100% irgendein ein selbst verursachter Fehler ist den du jetzt nur leider nicht auf die Schnelle siehst.
|
AW: Timer funktionieren nicht
Hello, du könntest spassenshalber mal versuchen auf einer seite die nicht funktioniert einen externen timer einzupflegen um zu sehen ob der eigentliche timer durch irgendwas geblockt wird.
Ein Manual wie man einen externen timer einbaut findest du hier: ![]() Falls Link down geht, hier nochmal:
Delphi-Quellcode:
Mehr über andere timer kannst du
{
The timeSetEvent function starts a specified timer event. The multimedia timer runs in its own thread. After the event is activated, it calls the specified callback function or sets or pulses the spe cified event object. MMRESULT timeSetEvent( UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent ); uDelay: Event delay, in milliseconds uResolution: Resolution of the timer event, in milliseconds. A resolution of 0 indicates periodic events should occur with the greatest possible accuracy. You should use the use the maximum value appropriate to reduce system overhead. fuEvent: TIME_ONESHOT Event occurs once, after uDelay milliseconds. TIME_PERIODIC Event occurs every uDelay milliseconds. } uses MMSystem; var mmResult: Integer; // callback function procedure TimeCallBack(TimerID, Msg: Uint; dwUser, dw1, dw2: DWORD); pascal; begin // Do something here. This procedure will be executed each 10 ms Form1.Label1.Caption := Form1.Label1.Caption + '%'; end; // Set a new timer with a delay of 10 ms procedure TForm1.Button1Click(Sender: TObject); begin mmResult := TimeSetEvent(10, 0, @TimeCallBack, 0, TIME_PERIODIC); end; // Cancel the timer event. procedure TForm1.FormDestroy(Sender: TObject); begin TimeKillEvent(mmResult); end; ![]() Wenn Du uns an deinem code teilhaben lässt könnte man bestimmt besser helfen. |
AW: Timer funktionieren nicht
Ich hätte Euch ja gerne an dem Code teilhaben lassen, nur was sollte ich Euch schicken? Mein ganzes Programm? Ich habe gerade einfach auf gut Glück die Create-Anweisung deaktiviert und siehe da, der Fehler taucht nicht mehr auf... Ich dachte schon, ich könnte eine Erfolgsmeldung ausgeben und habe überprüft, an welcher Stelle das Problem entsteht. Es ist in einer Unterprocedure einer Unterprocedure...
Aber leider für mich nit nachvollziehbar...
Delphi-Quellcode:
Hier werden bis zu 8 pdf-Dokumente geladen... Geladen werden alle, auch das erste, aber wenn das erste geladen wird, dann gehen alle Timer aus...
procedure TForm_Pinnwand.Load_All;
var MyPath: string; begin MyPath:=DatenPfad+GetComputerName+'\'+'O1.pdf'; Load_PDF(PdfView_O1, MyPath); //Hier entsteht der Fehler, aber nur bei der ersten Datei? Nehme ich die Zeile raus, läuft es... MyPath:=DatenPfad+GetComputerName+'\'+'O2.pdf'; Load_PDF(PdfView_O2, MyPath); MyPath:=DatenPfad+GetComputerName+'\'+'O3.pdf'; Load_PDF(PdfView_O3, MyPath); MyPath:=DatenPfad+GetComputerName+'\'+'O4.pdf'; Load_PDF(PdfView_O4, MyPath); MyPath:=DatenPfad+GetComputerName+'\'+'U1.pdf'; Load_PDF(PdfView_U1, MyPath); MyPath:=DatenPfad+GetComputerName+'\'+'U2.pdf'; Load_PDF(PdfView_U2, MyPath); MyPath:=DatenPfad+GetComputerName+'\'+'U3.pdf'; Load_PDF(PdfView_U3, MyPath); MyPath:=DatenPfad+GetComputerName+'\'+'U4.pdf'; Load_PDF(PdfView_U4, MyPath); Form_Orga; end; Das ist die Lade-Procedure:
Delphi-Quellcode:
Finde ich nicht logisch...
procedure TForm_Pinnwand.Load_PDF(PDF_Viewer: TPDFView; Datei: string);
begin if FileExists(Datei) then begin PDF_Viewer.Pdf.Active:=false; PDF_Viewer.Pdf.FileName:=Datei; PDF_Viewer.PDF.Active:=true; PDF_Viewer.Active:=true; end else begin PDF_Viewer.Pdf.Active:=false; PDF_Viewer.Pdf.FileName:=''; PDF_Viewer.Pdf.Active:=false; PDF_Viewer.Pdf.FileName:=''; PDF_Viewer.Active:= false; PDF_Viewer.Repaint; end; end; |
AW: Timer funktionieren nicht
Bist du sicher, dass der Timer aus geht (Enabled False) und nicht einfach nur hängen bleibt? Das sind zwei sehr große Unterschiede.
|
AW: Timer funktionieren nicht
Stimmt, der Timer bleibt enabled, aber funktioniert nicht...
Übrigens, wenn die Datei nicht gefunden wird, weil sie nicht da, dann tritt der Fehler auch nicht auf. Also spielt er sich irgendwie hier ab
Delphi-Quellcode:
procedure TForm_Pinnwand.Load_PDF(PDF_Viewer: TPDFView; Datei: string);
begin if FileExists(Datei) then begin PDF_Viewer.Pdf.Active:=false; PDF_Viewer.Pdf.FileName:=Datei; PDF_Viewer.PDF.Active:=true; PDF_Viewer.Active:=true; end |
AW: Timer funktionieren nicht
ich vermute stark das dein PDFdingens ein eigener thread ist, der timer hingegen im hauptthread liegt.
teste doch mal den externen multi media timer, was passiert? (der läuft im eigenen thread und sollte IMMER funzen) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 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 by Thomas Breitkreuz