unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls; type { TForm1 } TForm1 = class(TForm) TrayIcon1: TTrayIcon; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: tForm1; pidDatei: string; const DateiName = 'letztes_Wetter.txt'; PegelDateiName = 'letzte_Pegel.txt'; anzDaten = 7*24*6*4; (* function separateValue(var S: String): string; function Zeit2Datetime(Z: TZeit): extended; function PegelstaendeVergleichen(P1,P2: Pointer): integer; function PegelzeitVergleichen(P1,P2: TPegelzeit): integer; function findePegelZeit(PS: TList; PZ: TPegelzeit): extended; function strToPegelZeit(s: string): TPegelzeit; function Pegelzeit2Datetime(Z: TPegelzeit): extended; function letzterMonat(t: TDateTime): TPoint; // x=Monat, y=Jahr function MyIntToStr(I,Ziff: longint): string; *) implementation {$R *.lfm} uses process, myStringListUnit, lowLevelUnit, systemUnit; { TForm1 } procedure TForm1.FormCreate(Sender: TObject); var s,t: string; f,o: tMyStringList; fi: textfile; args: array of string; begin pidDatei:=''; s:=extractfilepath(application.exename)+'wetter.konf'; t:=''; if not fileexists(s) then raise exception.create('Kann Konfigurationsdatei '''+s+''' nicht finden!'); f:=tMyStringList.create; f.loadFromFile(s); f.unfoldMacros; while f.readln(s) do begin if startetMit('pidDatei:',s) then begin pidDatei:=s; assignFile(fi,pidDatei); if fileexists(pidDatei) then begin // pidDatei existiert schon reset(fi); readln(fi,s); if strtoint(s)<>GetProcessID then begin // der eingetragene Prozess bin nicht ich setlength(args,1); args[0]:='aux'; runCommand('ps',args,t); o:=tMyStringList.create; o.text:=t; o.grep('^\S+\s+'+s+'\s'); if o.count>0 then begin // der eingetragene Prozess läuft noch closeFile(fi); f.free; o.free; raise exception.create('Programm läuft bereits ('+s+')!'); end; o.free; end; closefile(fi); end; rewrite(fi); writeln(fi,inttostr(GetProcessID)); closeFile(fi); continue; end; raise exception.create('Unbekannte Option '''+s+''' in Konfigdatei!'); end; f.free; form1.caption:=inttostr(GetProcessID); end; procedure TForm1.FormDestroy(Sender: TObject); begin if fileExists(pidDatei) then deleteFile(pidDatei); end; end.