Status eines Programms zeigen

Zur Vorstellung von Komponenten und Units für Lazarus
Antworten
Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Status eines Programms zeigen

Beitrag von Michl »

Hallo,

wie schon in einem anderen Forum viewtopic.php?f=10&t=6986 geschrieben, habe ich die Statusanzeige (selbst gesetzter Status!) aus meinen Projekten herausgenommen und daraus ein Programm erstellt (nur Basisversion, meine jetzige Statusanzeige hat noch einige Filter- und Einstellungsmöglichkeiten, wenn ich diese mal aufgeräumt habe und Interesse besteht, kann ich sie hier auch mal anhängen).

Falls jemand eine ähnliche Anzeige benötigt, dachte ich mir, ich stelle sie hier mal vor. Ist auf jeden Fall komfortabler und etwas schneller, als sich seinen Programm-Status über die Konsole anzeigen zu lassen! Ein weiterer großer Vorteil ist, dass das Status-Anzeige-Programm "StatusProg.exe" weiter läuft, wenn mal das eigene Projekt abstürzt. Dies hilft mir eigene Programmierfehler schneller zu entdecken oder die Gewichtung der Routinen zu optimieren (besonders bei einem Standalone-Programm, was lange eigenständig läuft).
Wer ein Beispiel für eine Kommunikation zweier Programme (externes Programm steuern) mittels SimpleIPC (TSimpleIPC) benötigt, könnte sich das auch mal anschauen.

[Edit]
Wie benutzen?!
- zuerst die angehangene Datei runterladen und in dem gewünschten Verzeichnis entpacken
- jetzt das Projekt "StatusProg" aus dem Unterverzeichnis ..\StatusProg laden und starten (es wird die StatusProg.exe (das Formular mit dem IPC-Server) erstellt, die für StatusUnit notwendig ist)
- jetzt das Projekt "StatusTest" laden, ggf. bei FormCreate die Parameter für die Executable und der Status-Logdatei ändern s.U..
- man kann nun das Projekt starten und in der ComboBox die Sichtbarkeiten ändern (je nachdem werden die Ausgabe von Logeinträgen erlaubt/unterbunden) und mit den Buttons einfache Tests durchführen

- in einem eigenen Programm braucht man eigentlich nur die Unit "StatusUnit" in die uses-Klausel aufnehmen und z.B. im Form.OnCreate-Event "Status" createn, dann kann man mit StatLn('IrgendeinText') Texte (auch in allen SubUnits) ausgeben:

Code: Alles auswählen

uses ..., StatusUnit;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  Status:=TStatus.Create(Self, 'StatusProg\StatusProg.exe', 'Temp\Status.txt');
  StatLn(2 ,'[TForm1.FormCreate] wird soeben ausgeführt');
end;   

Sollte jetzt eigentlich unter allen Betriebssystemen laufen (wenn die Pfade im Create entsprechend angepasst wurden), habe sie bisher aber nur unter Win7 getestet.
Dateianhänge
StatusTest.png
StatusTest.zip
(13.75 KiB) 105-mal heruntergeladen

Code: Alles auswählen

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

Antworten