AGB  ·  Datenschutz  ·  Impressum  







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

Timer funktionieren nicht

Ein Thema von Ykcim · begonnen am 16. Okt 2018 · letzter Beitrag vom 16. Okt 2018
Antwort Antwort
Seite 1 von 2  1 2      
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#1

Timer funktionieren nicht

  Alt 16. Okt 2018, 15:24
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
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Timer funktionieren nicht

  Alt 16. Okt 2018, 16:10
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Timer funktionieren nicht

  Alt 16. Okt 2018, 16:24
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
Patrick
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Timer funktionieren nicht

  Alt 16. Okt 2018, 16:39
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...
Patrick
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: Timer funktionieren nicht

  Alt 16. Okt 2018, 16:46
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.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Timer funktionieren nicht

  Alt 16. Okt 2018, 16:51
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: hier

Falls Link down geht, hier nochmal:
Delphi-Quellcode:
{
  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;
Mehr über andere timer kannst du hier erfahren.

Wenn Du uns an deinem code teilhaben lässt könnte man bestimmt besser helfen.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Timer funktionieren nicht

  Alt 16. Okt 2018, 17:08
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:
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;
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...
Das ist die Lade-Procedure:
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
   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;
Finde ich nicht logisch...
Patrick
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#8

AW: Timer funktionieren nicht

  Alt 16. Okt 2018, 17:19
Bist du sicher, dass der Timer aus geht (Enabled False) und nicht einfach nur hängen bleibt? Das sind zwei sehr große Unterschiede.
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Timer funktionieren nicht

  Alt 16. Okt 2018, 17:20
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
Patrick

Geändert von Ykcim (16. Okt 2018 um 17:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Timer funktionieren nicht

  Alt 16. Okt 2018, 17:26
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)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz