(*--------------------------------------------------------------------------*)
Function Koeppen(Nr:integer):Text;
(*--------------------------------------------------------------------------*)

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;

Impressum · Datenschutz