summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2015-11-16 06:37:30 +0100
committerErich Eckner <git@eckner.net>2015-11-16 06:37:30 +0100
commite99f3fec7e287b879ceeb0f0d95185cf2ab0791e (patch)
tree2f108f17c53ee6993ae73a91426dcae3ab4efac4
parent18b2f6120d3320d0557b04e9c04ead225e88447b (diff)
downloadFH-Wetter-e99f3fec7e287b879ceeb0f0d95185cf2ab0791e.tar.xz
Tagesendstand, pegelunit begonnen
-rw-r--r--.gitignore9
-rw-r--r--fhunit.pas36
-rw-r--r--pegelunit.pas235
-rw-r--r--unit1.lfm14
-rw-r--r--unit1.pas114
-rwxr-xr-xwetterbin0 -> 19737611 bytes
-rw-r--r--wetter.icobin0 -> 137040 bytes
-rw-r--r--wetter.konf4
-rw-r--r--wetter.lpi87
-rw-r--r--wetter.lpr21
-rw-r--r--wetter.lps204
-rw-r--r--wetter.resbin0 -> 138696 bytes
12 files changed, 724 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..21d9c21
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+*.bak
+*.ppu
+*.o
+*.tar.gz
+*~
+fernbedienung
+lib
+Log*
+socket
diff --git a/fhunit.pas b/fhunit.pas
new file mode 100644
index 0000000..02c9d6d
--- /dev/null
+++ b/fhunit.pas
@@ -0,0 +1,36 @@
+unit fhunit;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, Graphics;
+
+type
+ tMessgroesze = (mgTemperatur,mgLuftfeuchte,mgWindgeschwindigkeit,mgWindrichtung,
+ mgNiederschlag,mgGlobalstrahlung,mgLuftdruck);
+ tZeitgroesze = (zgJahr,zgMonat,zgTag,zgStunde,zgMin10);
+ tMesswerte = array[tMessgroesze] of extended;
+ tZeit = array[tZeitgroesze] of integer;
+ tMesspunkt = record
+ zeit: tZeit;
+ mW: tMesswerte;
+ end;
+
+const
+ messNamen: array[tMessgroesze] of string =
+ ('Temperatur','Luftfeuchte','Windgeschwindigkeit','Windrichtung',
+ 'Niederschlag','Globalstrahlung','Luftdruck');
+ maszEinheit: array[tMessgroesze] of string =
+ ('°C','%','m/s','°','mm','W/m²','mbar');
+ monatsNamen: array[1..12] of string =
+ ('Januar','Februar','März','April','Mai','Juni','Juli',
+ 'August','September','Oktober','November','Dezember');
+ farben: array[tMessgroesze] of tColor =
+ ($0000DF,$CFAF7F,$007FFF,$FF00FF,$FFAF3F,$3FAFAF,$AFAFAF);
+
+implementation
+
+end.
+
diff --git a/pegelunit.pas b/pegelunit.pas
new file mode 100644
index 0000000..7cda392
--- /dev/null
+++ b/pegelunit.pas
@@ -0,0 +1,235 @@
+unit pegelunit;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, Graphics;
+
+type
+ tPegelZeitGroesze = (pzgJahr,pzgMonat,pzgTag,pzgStunde,pzgMin15);
+ tPegelZeit = array[tPegelZeitgroesze] of integer;
+ tPegelStation = (psBlankenstein,psKaulsdorf,psSaalfeld,psRudolstadt,
+ psRothenstein,psCamburg,psMoeschlitz,psProbstzella,psKaulsdorfEichicht,
+ psKatzhuette,psSchwarzburg,psFreienorla);
+ tPegel = record
+ zeit: tPegelZeit;
+ hoehe: longint;
+ end;
+ pTPegel = ^tPegel;
+
+ tPegelStaende = class
+ werte: array[tPegelStation] of tList;
+ constructor create;
+ destructor destroy; override;
+// procedure einlesen(was: string);
+ procedure laden(von: string);
+ procedure speichern(nach: string);
+ end;
+
+implementation
+
+uses systemunit;
+
+const
+ pegelStationsNamen: array[tPegelstation] of array[0..1] of string =
+ (('Blankenstein','Blankenstein-Ros.'),
+ ('Kaulsdorf',''),
+ ('Saalfeld-Remschütz',''),
+ ('Rudolstadt',''),
+ ('Rothenstein',''),
+ ('Camburg-Stöben',''),
+ ('Möschlitz',''),
+ ('Probstzella',''),
+ ('Kaulsdorf-Eichicht',''),
+ ('Katzhütte',''),
+ ('Schwarzburg',''),
+ ('Freienorla',''));
+ pegelStationsNummern: array[tPegelstation] of extended =
+ (57021,57025,57026,57027,57028,57033,57170,57200,57201,57211,57211.5,57240);
+ pegelGrenzen: array[tPegelstation,0..3] of longint =
+ ((210,230,270,310),(195,210,225,240),(200,230,260,290),(150,180,210,240),
+ (250,290,330,370),(280,330,380,430),(180,200,220,240),(0,0,0,0),
+ (130,170,210,230),(200,230,260,290),(130,150,170,190),(0,0,0,0));
+ pFarben: array[tPegelstation] of tColor =
+ ($000000,$000000,$000000,$FF0000,$7F0000,$000000,$000000,$000000,$000000,$000000,$000000,$000000);
+
+// tPegelStaende ***************************************************************
+
+constructor tPegelStaende.create;
+var
+ ps: tPegelStation;
+begin
+ inherited create;
+ for ps:=low(tPegelStation) to high(tPegelStation) do
+ werte[ps]:=tList.create;
+end;
+
+destructor tPegelStaende.destroy;
+var
+ ps: tPegelStation;
+begin
+ for ps:=low(tPegelStation) to high(tPegelStation) do
+ werte[ps].free;
+ inherited destroy;
+end;
+
+procedure tPegelStaende.laden(von: string);
+var
+ f: textfile;
+ s: string;
+ ps: tPegelstation;
+ pzg: tPegelzeitgroesze;
+ psda,gefunden: boolean;
+ np: pTPegel;
+ i: longint;
+begin
+ if not fileexists(von) then exit;
+ assignfile(f,von);
+ reset(f);
+ psda:=false;
+ ps:=low(TPegelstation);
+ while not eof(f) do begin
+ readln(f,s);
+ if pos('Station: ',s)=1 then begin
+ delete(s,1,pos(' ',s));
+ ps:=low(TPegelstation);
+ gefunden:=false;
+ while ps<=high(TPegelstation) do begin
+ for i:=0 to length(Pegelstationsnamen[psBlankenstein])-1 do
+ gefunden:=gefunden or ((Pegelstationsnamen[ps,i]<>'') and (Pegelstationsnamen[ps,i]=s));
+ if gefunden then break;
+ inc(ps);
+ end;
+ if not gefunden then begin
+ closefile(f);
+ raise exception.create('Pegelstation '''+s+''' nicht gefunden!');
+ end;
+ psda:=true;
+ continue;
+ end;
+ if not psda then
+ raise exception.create('Es wurde noch keine Pegelstation erwähnt!');
+ getmem(np,sizeof(TPegel));
+ werte[ps].Add(np);
+ for pzg:=low(tPegelZeitGroesze) to high(tPegelZeitGroesze) do begin
+ np^.Zeit[pzg]:=strtoint(copy(s,1,pos(' ',s)-1));
+ delete(s,1,pos(' ',s));
+ end;
+ np^.Hoehe:=strtoint(s);
+ end;
+ closefile(f);
+end;
+
+procedure tPegelStaende.speichern(nach: string);
+var
+ dateischonda: boolean;
+ f: textfile;
+ ps: tPegelStation;
+ pzg: tPegelZeitGroesze;
+ i: longint;
+ s: string;
+begin
+ dateischonda:=fileexists(nach);
+ if dateischonda then
+ assignfile(f,mkTemp(nach+'.XXXXXX'))
+ else
+ assignfile(f,nach);
+ rewrite(f);
+ for ps:=low(tPegelStation) to high(tPegelStation) do begin
+ writeln(f,'Station: '+Pegelstationsnamen[ps,0]);
+ for i:=0 to werte[ps].Count-1 do begin
+ s:='';
+ for pzg:=low(tPegelZeitGroesze) to high(tPegelZeitGroesze) do
+ s:=s+inttostr(pTPegel(werte[ps][i])^.zeit[pzg])+' ';
+ writeln(f,s+inttostr(pTPegel(werte[ps][i])^.hoehe));
+ end;
+ end;
+ closefile(f);
+ if dateischonda then begin
+ deletefile(nach);
+ rename(f,nach);
+ end;
+end;
+
+(*
+procedure tPegelStaende.einlesen(von: string);
+var t: string;
+ PS: TPegelstation;
+ psda,wsda,gefunden: boolean;
+ PZ: TPegelZeit;
+ posi: extended;
+ nps: PTPegel;
+ PZG: TPegelZeitGroesze;
+ i: longint;
+begin
+ s:=s+#10;
+ result:=false;
+ psda:=false;
+ wsda:=false;
+ PS:=low(TPegelstation);
+ while pos(#13,s)>0 do begin
+ t:=copy(s,1,pos(#10,s)-1);
+ delete(s,1,pos(#10,s));
+ while pos(#13,t)>0 do
+ delete(t,pos(#13,t),1);
+ if length(t)=0 then continue;
+ if pos('Pegelname: ',t)=1 then begin
+ delete(t,1,pos(' ',t));
+ PS:=low(TPegelstation);
+ gefunden:=false;
+ while PS<=high(TPegelstation) do begin
+ for i:=0 to length(Pegelstationsnamen[psBlankenstein])-1 do
+ gefunden:=gefunden or ((Pegelstationsnamen[PS,i]<>'') and (Pegelstationsnamen[PS,i]=t));
+ if gefunden then break;
+ inc(PS);
+ end;
+ if not gefunden then begin
+ Messagedlg('Unbekannter Pegelname: '''+t+'''!',mterror,[mbOk],0);
+ exit;
+ end;
+ psda:=true;
+ continue;
+ end;
+ if t='Durchfluss [m3/s]' then begin
+ wsda:=false;
+ continue;
+ end;
+ if t='Wasserstand [cm]' then begin
+ wsda:=true;
+ continue;
+ end;
+ if not (wsda and psda) then continue;
+ if pos('Fluss: ',t)=1 then continue;
+ if pos('Flusseinzugsgebiet: ',t)=1 then continue;
+ if pos('Stationsnummer: ',t)=1 then begin
+ delete(t,1,pos(' ',t));
+ while pos(' ',t)=1 do delete(t,1,1);
+ while pos('.',t)>0 do t[pos('.',t)]:=',';
+ if round(10*strtofloat(t))<>round(10*Pegelstationsnummern[PS]) then begin
+ Messagedlg('erwartete Pegelstationsnummer ('+floattostr(Pegelstationsnummern[PS])+
+ ') für '+Pegelstationsnamen[PS,0]+' ist verschieden von der angegebenen Nummer ('+t+')!',mtError,[mbOk],0);
+ exit;
+ end;
+ continue;
+ end;
+ if pos('Hinweise: ',t)=1 then continue;
+ if pos('keine Werte',t)>0 then continue;
+ PZ:=strToPegelZeit(t);
+ posi:=findePegelZeit(Pegelstaende[PS],PZ);
+ if odd(round(2*posi)) then begin
+ result:=true;
+ getmem(nps,sizeof(TPegel));
+ for PZG:=low(TPegelZeitGroesse) to high(TPegelZeitGroesse) do
+ nps^.Zeit[PZG]:=PZ[PZG];
+ delete(t,1,pos(',',t)+1);
+ nps^.Hoehe:=strtoint(t);
+ Pegelstaende[PS].Insert(round(posi+0.5),nps);
+ end;
+ end;
+ Zeichnen;
+end;
+*)
+end.
+
diff --git a/unit1.lfm b/unit1.lfm
new file mode 100644
index 0000000..c88597b
--- /dev/null
+++ b/unit1.lfm
@@ -0,0 +1,14 @@
+object Form1: TForm1
+ Left = 2787
+ Height = 240
+ Top = 260
+ Width = 320
+ Caption = 'Form1'
+ OnCreate = FormCreate
+ OnDestroy = FormDestroy
+ LCLVersion = '1.4.4.0'
+ object TrayIcon1: TTrayIcon
+ left = 16
+ top = 8
+ end
+end
diff --git a/unit1.pas b/unit1.pas
new file mode 100644
index 0000000..b06b54d
--- /dev/null
+++ b/unit1.pas
@@ -0,0 +1,114 @@
+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.
+
diff --git a/wetter b/wetter
new file mode 100755
index 0000000..ad437f8
--- /dev/null
+++ b/wetter
Binary files differ
diff --git a/wetter.ico b/wetter.ico
new file mode 100644
index 0000000..0341321
--- /dev/null
+++ b/wetter.ico
Binary files differ
diff --git a/wetter.konf b/wetter.konf
new file mode 100644
index 0000000..59a9316
--- /dev/null
+++ b/wetter.konf
@@ -0,0 +1,4 @@
+pidDatei: /tmp/wetter.pid
+#wetterDatei: letztes_Wetter.txt
+#pegelDatei: letzte_Pegel.txt
+#anzahlDaten: 7*24*6*4
diff --git a/wetter.lpi b/wetter.lpi
new file mode 100644
index 0000000..26575a7
--- /dev/null
+++ b/wetter.lpi
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+ <ProjectOptions>
+ <Version Value="9"/>
+ <General>
+ <SessionStorage Value="InProjectDir"/>
+ <MainUnit Value="0"/>
+ <Title Value="wetter"/>
+ <ResourceType Value="res"/>
+ <UseXPManifest Value="True"/>
+ <Icon Value="0"/>
+ </General>
+ <i18n>
+ <EnableI18N LFM="False"/>
+ </i18n>
+ <VersionInfo>
+ <StringTable ProductVersion=""/>
+ </VersionInfo>
+ <BuildModes Count="1">
+ <Item1 Name="Default" Default="True"/>
+ </BuildModes>
+ <PublishOptions>
+ <Version Value="2"/>
+ </PublishOptions>
+ <RunParams>
+ <local>
+ <FormatVersion Value="1"/>
+ </local>
+ </RunParams>
+ <RequiredPackages Count="1">
+ <Item1>
+ <PackageName Value="LCL"/>
+ </Item1>
+ </RequiredPackages>
+ <Units Count="4">
+ <Unit0>
+ <Filename Value="wetter.lpr"/>
+ <IsPartOfProject Value="True"/>
+ </Unit0>
+ <Unit1>
+ <Filename Value="unit1.pas"/>
+ <IsPartOfProject Value="True"/>
+ <ComponentName Value="Form1"/>
+ <ResourceBaseClass Value="Form"/>
+ <UnitName Value="Unit1"/>
+ </Unit1>
+ <Unit2>
+ <Filename Value="original/pegelunit.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit2>
+ <Unit3>
+ <Filename Value="fhunit.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit3>
+ </Units>
+ </ProjectOptions>
+ <CompilerOptions>
+ <Version Value="11"/>
+ <Target>
+ <Filename Value="wetter"/>
+ </Target>
+ <SearchPaths>
+ <IncludeFiles Value="$(ProjOutDir)"/>
+ <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+ </SearchPaths>
+ <Linking>
+ <Options>
+ <Win32>
+ <GraphicApplication Value="True"/>
+ </Win32>
+ </Options>
+ </Linking>
+ </CompilerOptions>
+ <Debugging>
+ <Exceptions Count="3">
+ <Item1>
+ <Name Value="EAbort"/>
+ </Item1>
+ <Item2>
+ <Name Value="ECodetoolError"/>
+ </Item2>
+ <Item3>
+ <Name Value="EFOpenError"/>
+ </Item3>
+ </Exceptions>
+ </Debugging>
+</CONFIG>
diff --git a/wetter.lpr b/wetter.lpr
new file mode 100644
index 0000000..cc5b442
--- /dev/null
+++ b/wetter.lpr
@@ -0,0 +1,21 @@
+program wetter;
+
+{$mode objfpc}{$H+}
+
+uses
+ {$IFDEF UNIX}{$IFDEF UseCThreads}
+ cthreads,
+ {$ENDIF}{$ENDIF}
+ Interfaces, // this includes the LCL widgetset
+ Forms, Unit1, pegelunit, fhunit
+ { you can add units after this };
+
+{$R *.res}
+
+begin
+ RequireDerivedFormResource := True;
+ Application.Initialize;
+ Application.CreateForm(TForm1, Form1);
+ Application.Run;
+end.
+
diff --git a/wetter.lps b/wetter.lps
new file mode 100644
index 0000000..4a77bfc
--- /dev/null
+++ b/wetter.lps
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+ <ProjectSession>
+ <Version Value="9"/>
+ <BuildModes Active="Default"/>
+ <Units Count="9">
+ <Unit0>
+ <Filename Value="wetter.lpr"/>
+ <IsPartOfProject Value="True"/>
+ <EditorIndex Value="-1"/>
+ <WindowIndex Value="-1"/>
+ <TopLine Value="-1"/>
+ <CursorPos X="-1" Y="-1"/>
+ <UsageCount Value="20"/>
+ </Unit0>
+ <Unit1>
+ <Filename Value="unit1.pas"/>
+ <IsPartOfProject Value="True"/>
+ <ComponentName Value="Form1"/>
+ <ResourceBaseClass Value="Form"/>
+ <UnitName Value="Unit1"/>
+ <TopLine Value="59"/>
+ <CursorPos X="30" Y="88"/>
+ <UsageCount Value="20"/>
+ <Loaded Value="True"/>
+ <LoadedDesigner Value="True"/>
+ </Unit1>
+ <Unit2>
+ <Filename Value="original/Unit1.pas"/>
+ <IsVisibleTab Value="True"/>
+ <EditorIndex Value="4"/>
+ <TopLine Value="1027"/>
+ <CursorPos Y="1039"/>
+ <UsageCount Value="10"/>
+ <Loaded Value="True"/>
+ </Unit2>
+ <Unit3>
+ <Filename Value="original/pegelunit.pas"/>
+ <IsPartOfProject Value="True"/>
+ <EditorIndex Value="-1"/>
+ <UsageCount Value="20"/>
+ </Unit3>
+ <Unit4>
+ <Filename Value="pegelunit.pas"/>
+ <EditorIndex Value="3"/>
+ <TopLine Value="124"/>
+ <CursorPos Y="58"/>
+ <UsageCount Value="10"/>
+ <Loaded Value="True"/>
+ </Unit4>
+ <Unit5>
+ <Filename Value="fhunit.pas"/>
+ <IsPartOfProject Value="True"/>
+ <EditorIndex Value="2"/>
+ <CursorPos X="28" Y="30"/>
+ <UsageCount Value="20"/>
+ <Loaded Value="True"/>
+ </Unit5>
+ <Unit6>
+ <Filename Value="../units/systemunit.pas"/>
+ <EditorIndex Value="-1"/>
+ <TopLine Value="116"/>
+ <CursorPos Y="159"/>
+ <UsageCount Value="10"/>
+ </Unit6>
+ <Unit7>
+ <Filename Value="wetter.konf"/>
+ <EditorIndex Value="1"/>
+ <UsageCount Value="10"/>
+ <Loaded Value="True"/>
+ <DefaultSyntaxHighlighter Value="None"/>
+ </Unit7>
+ <Unit8>
+ <Filename Value="/usr/lib/fpc/src/packages/fcl-process/src/process.pp"/>
+ <EditorIndex Value="-1"/>
+ <TopLine Value="157"/>
+ <CursorPos X="73" Y="178"/>
+ <UsageCount Value="10"/>
+ </Unit8>
+ </Units>
+ <JumpHistory Count="30" HistoryIndex="29">
+ <Position1>
+ <Filename Value="unit1.pas"/>
+ <Caret Line="92" TopLine="62"/>
+ </Position1>
+ <Position2>
+ <Filename Value="unit1.pas"/>
+ <Caret Line="79" Column="31" TopLine="58"/>
+ </Position2>
+ <Position3>
+ <Filename Value="unit1.pas"/>
+ <Caret Line="61" Column="9" TopLine="55"/>
+ </Position3>
+ <Position4>
+ <Filename Value="unit1.pas"/>
+ <Caret Line="74" Column="42" TopLine="66"/>
+ </Position4>
+ <Position5>
+ <Filename Value="unit1.pas"/>
+ <Caret Line="109" Column="9" TopLine="70"/>
+ </Position5>
+ <Position6>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="62" Column="17" TopLine="24"/>
+ </Position6>
+ <Position7>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="72" Column="56" TopLine="33"/>
+ </Position7>
+ <Position8>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="25" Column="34"/>
+ </Position8>
+ <Position9>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="84" Column="41" TopLine="62"/>
+ </Position9>
+ <Position10>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="77" Column="3" TopLine="59"/>
+ </Position10>
+ <Position11>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="129" Column="18" TopLine="97"/>
+ </Position11>
+ <Position12>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="79" Column="24" TopLine="57"/>
+ </Position12>
+ <Position13>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="86" Column="19" TopLine="62"/>
+ </Position13>
+ <Position14>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="89" Column="23" TopLine="67"/>
+ </Position14>
+ <Position15>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="90" Column="18" TopLine="68"/>
+ </Position15>
+ <Position16>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="108" Column="69" TopLine="86"/>
+ </Position16>
+ <Position17>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="114" Column="72" TopLine="94"/>
+ </Position17>
+ <Position18>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="116" Column="8" TopLine="95"/>
+ </Position18>
+ <Position19>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="23" Column="41"/>
+ </Position19>
+ <Position20>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="73" Column="19" TopLine="44"/>
+ </Position20>
+ <Position21>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="115" Column="54" TopLine="94"/>
+ </Position21>
+ <Position22>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="117" Column="3" TopLine="94"/>
+ </Position22>
+ <Position23>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="128" Column="35" TopLine="107"/>
+ </Position23>
+ <Position24>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="133" Column="6" TopLine="110"/>
+ </Position24>
+ <Position25>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="57" Column="17" TopLine="42"/>
+ </Position25>
+ <Position26>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="135" Column="15" TopLine="114"/>
+ </Position26>
+ <Position27>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="136" Column="36" TopLine="114"/>
+ </Position27>
+ <Position28>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="135" Column="40" TopLine="120"/>
+ </Position28>
+ <Position29>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="137" Column="20" TopLine="115"/>
+ </Position29>
+ <Position30>
+ <Filename Value="pegelunit.pas"/>
+ <Caret Line="152" Column="17" TopLine="119"/>
+ </Position30>
+ </JumpHistory>
+ </ProjectSession>
+</CONFIG>
diff --git a/wetter.res b/wetter.res
new file mode 100644
index 0000000..e994dfa
--- /dev/null
+++ b/wetter.res
Binary files differ