Console App mit FPTimer

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
jomixl
Beiträge: 18
Registriert: Mo 22. Okt 2012, 12:21

Console App mit FPTimer

Beitrag von jomixl »

Hallo zusammen,
ich versuche meine erste Konsolenanwendung zu schreiben und versuche seit einiger Zeit einen Timer(FPtimer) einzubinden.
Bisher ohne Erfolg.
Gibt es irgendwo ein Beispiel für eine Konsolenanwendung bei der ich abschauen kann wie der Timer implementiert wird?
... das was ich mit google finde ist mir noch zu kompliziert, ich brauche was für noobs .....

danke joachim

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Console App mit FPTimer

Beitrag von Michl »

Ein einfaches Beispiel findest Du bei Dir in einer aktuellen FPC (Windows) Version unter:

...lazarus\fpc\2.6.0\source\packages\fcl-base\examples\testtimer.pp

Michl

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Console App mit FPTimer

Beitrag von mschnell »

Da wird Sleep(1) verwendet.

Sleep(1) verursacht nur eine minimale durchschnittliche Verzögerung (Latenz), aber einen sehr großen CPU Overhead. (hohe CPU-Auslastung -> starke beeinträchtigung parallel laufender Applikationben und höchst möglichen Stromverbrauch.

Wenn Du dir eine größere Latenz leisten kannst, solltest Du einen längeren Sleep verwenden.

Besser wäre es natürlich einen Timer im Betriebssystem (also warten mit Hardware-Unterstützung zu verwenden. Ist aber deutlich komplizierter.

(Bei mse-IDE kann man den normalen TTimer ohne Einschränkung bezüglich der Laztenz und der CPU-Last auch bei nicht GUI basierten Applikationen verwenden.)

-Michael

jomixl
Beiträge: 18
Registriert: Mo 22. Okt 2012, 12:21

Re: Console App mit FPTimer

Beitrag von jomixl »

danke schonmal,
mein Problem liegt aber noch davor ....
Bisher habe ich meine Programme (vor allem Delphi) mit der GUI erstellt. Da war es ja einfach eine z.B. Timercomponente einzufügen.
Bei der Konsolenapp geht das aber wohl nicht mehr so einfach, liegt wohl an der OOP. Leider konnte ich bisher keine für mich verständliche
Anleitung finden wie das zu machen wäre.

Bin aber noch weiter am suchen ....

Gruß joachim

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Console App mit FPTimer

Beitrag von mschnell »

jomixl hat geschrieben:liegt wohl an der OOP.
Liegt daran, dass die LCL für solche Programme keine solche "OOP" zur Verfügung stellt. Das wäre dann eben kein "Commandline Tool" (Programm), sondern eine "Non-GUI-Application" (Anwendung).

[ Besserwisser-Modus an ]
Die Frage hier ist nicht "Objekt-Orientierte Programmierung" sondern "Ereignis-gesteuerte Programmierung".

Bei Ereignis-gesteuerter Programmierung wird der User-Code ausschießlich in "Events" untergebracht, die vom Laufzeit-System aufgerufen werden, wenn etwas entsprechendes zu tun ist. Der User-Code muss ein Event durchlaufen und wieder verlassen, und braucht (und darf) dabei nich auf irgendetwas warten. (Das geht mit und ohne OOP.).

Das Lazarus (und Delphi) Laufzeit-System kann nur im "Mainthread" Events auslösen. "Worker-Threads" sind nicht in dieser Weise benutzbar. Sie dürfen also auch blockieren (z.B. auf Input von "außen" in einem Blocking Read warten.

-Michael

jomixl
Beiträge: 18
Registriert: Mo 22. Okt 2012, 12:21

Re: Console App mit FPTimer

Beitrag von jomixl »

genau das ist ja mein Problem:
wie komme ich zu meinem Timer event bzw. wie muß ich den Timer implementieren.
Auch bei der TApplication hab ich so meine Probleme, wo kommt jetzt mein Programm hin ......, wie sieht ein zweiter Timer aus usw.
also alles Anfänger bzw. Verständnisprobleme.
In den Tutorials wird immer nur der Programmrumpf erklärt, aber keiner sagt mir dann wie es weiter geht .....

bin aber noch am suche ...
joachim

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Console App mit FPTimer

Beitrag von mse »

jomixl hat geschrieben: bin aber noch am suche ...
Wie mschnell schon schrieb, tnoguiapplication von MSEgui kann das. Hier werden alle nicht visuellen Komponenten (ttimer, tthreadcomp, tpipereadercomp, tprocessmonitor, tpipeiochannel, die Datenbank-Komponenten...) in Konsolenprogrammen zur Entwicklungszeit in Datamodulen plaziert und funktionieren zur Laufzeit wie in GUI-Programmen.

Martin

Antworten