Autor |
Beitrag |
matt1
Hält's aus hier
Beiträge: 10
|
Verfasst: Mo 02.02.09 22:31
Hallo,
ich brauche einen Timer für eine Art "crawler" program, also ohne Forms, ohne Paletten. Läuft alles batch. Mein Problem ist dass ich den Timer zwar zur Laufzeit erstellen kann, aber wie kriege ich den OnTimer Event richtig hin?
also etwa so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TParserDemoF.ProcessBatch(parm1:String; parm2:String) ; var myTimer: TTimer ; begin myTimer := TTimer.Create(self) ; myTimer.Enabled := True ; myTimer.Interval := 20000 ; myTimer.OnTimer(myTimer) ; end ; |
Der Compiler schluckt das soweit, aber ich versteh nicht, wo ich jetzt den OnTimer event codieren soll und bin auch nicht sicher, ob der obige Code überhaupt so funktionieren wird. Hat jemand ein kleines Beispiel? vermutlich ist meine Frage eher dumm, aber ich brauche Delphi nur gelegentlich.
Vielen Dank schonmal.
Matt
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 02.02.09 22:36
Moin und  im Forum!
matt1 hat folgendes geschrieben : | also ohne Forms, ohne Paletten. Läuft alles batch. |
Du willst eine Konsolenanwendung schreiben? Dann verabschiede dich schonmal vom TTimer, der läuft da nicht, dafür brauchst du eine MessageLoop, und die ist erst im TApplication-Objekt drin.
Wenn es denn unbedingt eine Kommandozeilenanwendung werden soll, dann brauchst du schon einen Thread, um einen Timer nachzubilden.
matt1 hat folgendes geschrieben : | Mein Problem ist dass ich den Timer zwar zur Laufzeit erstellen kann, aber wie kriege ich den OnTimer Event richtig hin? |
Möglicherweise hat sich dein "Problem" grade erledigt  ansonsten mach eine VCL-Anwendung und verstecke das Hauptformular.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Mo 02.02.09 23:04
Nabend!
Wie Narses schon schrieb, ist ein TTimer in einer Konsolen-Applikation nicht möglich. Nichts desto trotz, der Vollständigkeit halber, ein Beispiel einer manuellen Zuweisung einer Event-Behandlung:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| Type TParserDemoF = class(TForm) private myTimer: TTimer ; procedure MyTimerEvent(Sender: TObject); end;
procedure TParserDemoF.MyTimerEvent(Sender: TObject); begin end;
procedure TParserDemoF.ProcessBatch(parm1:String; parm2:String) ; begin myTimer := TTimer.Create(self) ; myTimer.Enabled := True ; myTimer.Interval := 20000 ; myTimer.OnTimer := MyTimerEvent ; end ; |
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
matt1 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mo 02.02.09 23:19
Narses hat folgendes geschrieben : | Möglicherweise hat sich dein "Problem" grade erledigt ansonsten mach eine VCL-Anwendung und verstecke das Hauptformular.  |
vielen Dank euch beiden. Ja das mit dem versteckten Hauptformular wäre vermutlich am einfachsten, da ich eine bestehende Applikation einfach umschreiben muss, so dass sie in Batch läuft. Einfach ohne User-Input, alles über Parms gesteuert. Aber wie geht das mit dem verstecken - so grob ausgedrückt.
tx,
Matt
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Mo 02.02.09 23:23
Neue Frage, neuer Thread!
Nur, weil es ein Einzeiller ist, antworte ich mal drauf:
Delphi-Quelltext
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 03.02.09 01:43
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Di 03.02.09 11:16
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 03.02.09 11:34
Aber nur bei sehr neuen Delphiversionen  .
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Di 03.02.09 13:36
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 03.02.09 14:57
Sorry, ich habe das mit MainFormOnTaskbar verwechselt.
Das gibt es erst bei neueren Versionen.
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 03.02.09 16:17
...oder man nimmt eine DLL, da kann man auch Timer nutzen und hat kein Formular.
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
|
Verfasst: Di 03.02.09 19:42
Hallo matt1,
vielleicht noch ein Hinweis.
Wenn Du den Timer zur Laufzeit erstellen willst, solltest Du in auch einen Namen geben.
Delphi-Quelltext 1:
| myTimer.Name:= 'myTimer'; |
Bis bald Chemiker
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 03.02.09 21:47
|
|
matt1 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 04.02.09 15:45
dank an alle, Problem ist gelöst. Ich starte die Applikation normal, FormCreate() wird ausgeführt, doch bevor die Form am Bildschirm erscheint, rufe ich die Batch Routine auf, und aktiviere den Timer. Am Schluss dann einfach
myTimer.Enabled := false ;
self.Hide ;
close ;
und die Applikation endet ohne Fehlermeldung. Während der Laufzeit ist die Form zwar sichtbar, aber man kann nichts eingeben und daher stört es micht nicht.
Matt
|
|