Var
MaxT,MaxN,MinT,MinN: real;
Koep1,Koep2,Koep3:
Text;
i,j,k:
integer;
AnzT10:
integer;
Sommer:
String[5];
MonatmaxT:
integer;
MonatminT:
integer;
MonatminN:
integer;
MonatmaxN:
integer;
Index:
real;
MaxNW:
real;
Begin
Koep1:='';Koep2:='';Koep3:='';
AnzT10:=0;
MinT:= Aktueller_Datensatz[Nr].Feld[Mittl_Temp,1];
MaxT:= Aktueller_Datensatz[Nr].Feld[Mittl_Temp,1];
MinN:= Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,1];
MaxN:= Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,1];
MonatmaxT:=1; MonatminT:=1;MonatmaxN:=1;MonatminN:=1;
For i:=1 to 12 do
begin
If MinT> Aktueller_Datensatz[Nr].Feld[Mittl_Temp,i] then
begin
MinT:= Aktueller_Datensatz[Nr].Feld[Mittl_Temp,i];
MonatminT:=i;
end;
If MaxT< Aktueller_Datensatz[Nr].Feld[Mittl_Temp,i] then
begin
MaxT:= Aktueller_Datensatz[Nr].Feld[Mittl_Temp,i];
MonatmaxT:=i;
end;
If MinN< Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i] then
begin
MinN:= Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i];
MonatminN:=i;
end;
If MinN> Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i] then
begin
MaxN:= Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i];
MonatmaxN:=i;
end;
If Aktueller_Datensatz[Nr].Feld[Mittl_Temp,i] > 10
then AnzT10:=AnzT10+1;
end;
Koep1:='B';
If ((MaxT-MinT <10) and (MaxN-MinN<20))
then
begin
Index:=
(Aktueller_Datensatz[Nr].Feld[Mittl_Temp,13]*2+14)*10;
end
else if (((MonatMaxT in [4,5,6,7,8,9])
and (MonatMinN in [4,5,6,7,8,9]))
or ((MonatMaxT in [1,2,3,10,11,12])and (MonatMinN in [1,2,3,10,11,12])))
then
begin
Index:= (Aktueller_Datensatz[Nr].Feld[Mittl_Temp,13]*2+28)*10;
end
else Index:=
(Aktueller_Datensatz[Nr].Feld[Mittl_Temp,13])*20;
If Index< Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,13]
then
begin
If MinT >
18
then Koep1:='A';
If ((MinT
<= 18) and (MinT >=-3)) then Koep1:='C';
If ((MinT
<= -3) and (MaxT > 10)) then Koep1:='D';
end;
If ((MaxT < 10) and (MaxT
> 0 )) then Koep1:='ET';
If MaxT < 0
then Koep1:='ET';
If Koep1 = 'A'
then begin
If MinN > 60
then Koep2:='f'
else begin
If (((MonatMaxT in [4,5,6,7,8,9]) and (MonatMinN in [4,5,6,7,8,9]))
or ((MonatMaxT in [1,2,3,10,11,12])and (MonatMinN in [1,2,3,10,11,12])))
then Koep2:='s' else Koep2:='w';
end;
end
else if Koep1 =
'B'
then begin
If Aktueller_Datensatz[Nr].Feld[Mittl_Temp,13]>=18 then Koep3:='h' else
Koep3:='k';
If ((MaxT-MinT<10) and (MaxN-MinN<20)) then
begin
Index:= (Aktueller_Datensatz[Nr].Feld[Mittl_Temp,13]+7)*10;
end
else if (((MonatMaxT in [4,5,6,7,8,9]) and (MonatMinN in [4,5,6,7,8,9]))
or ((MonatMaxT in [1,2,3,10,11,12])and (MonatMinN in [1,2,3,10,11,12])))
then
begin
Index:= (Aktueller_Datensatz[Nr].Feld[Mittl_Temp,13]+14)*10;
end
else Index:= (Aktueller_Datensatz[Nr].Feld[Mittl_Temp,13])*10;
If Index< Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,13] then Koep2:=
'S' else Koep2:='W';
end
else if ((Koep1 ='C') or (Koep1 = 'D'))
then begin
If ((MaxT>22) and (AnzT10>3)and (MinT>-38)) then Koep3:='a'
else if ((MaxT>=10) and (MaxT<=22) and (AnzT10>3) and (MinT >-38)) then
Koep3:='b'
else if((MaxT>=10) and (MaxT<=22) and (AnzT10>0) and (MinT>-38)) then
Koep3:='c'
else if ((MaxT>=10) and (MaxT<=22) and (MinT<-38)) then Koep3:='d';
If MonatMaxT in [4,5,6,7,8,9] then
begin
MaxNW:=Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,1];
For i:= 1 to 3 do if Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i]
> MaxNW
then MaxNW:=Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i];
For i:= 10 to 12 do if Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i]
> MaxNW
then MaxNW:=Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i];
end
else
begin
MaxNW:=Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,4];
For i:= 4 to 9 do if Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i]
> MaxNW
then MaxNW:=Aktueller_Datensatz[Nr].Feld[Mittl_Niederschlag,i];
end;
If ((MinN<MaxNW/3) and (MinN<40)) then Koep2:='s'
else if MinN < MaxNW/3 then Koep2:='w' else Koep2:='f';
end
else begin
end;
Koeppen:=Koep1+Koep2+Koep3;
end;