Thema: Delphi Hilfe bei Array

Einzelnen Beitrag anzeigen

El Mati

Registriert seit: 14. Mär 2005
2 Beiträge
 
Delphi 6 Personal
 
#1

Hilfe bei Array

  Alt 14. Mär 2005, 17:08
Hi,

Ich programmiere momentan einen Formatkonverter. Eigentlich nichts Umwerfendes, wenn auch für meine beschränkten Kenntnisse von Delphi nah an meiner Grenze. Vielleicht zum besseren Verständnis: Das Programm ließt Daten verschiedener Tabellen aus einer Datei in Arrays und soll diese in eine andere Datei schreiben (natürlich nachdem diese neu kombiniert und/oder berechnet worden sind). Das Einlesen war kein Problem . Allerdings das Umformen schon. Der rote Bereich in der Prozedur macht mir Kummer. Wenn ich das ganze debugge, erzählt man mir an der Stelle
Subcatchment[si].Outlet:= ConduitQ[ci].Oben;
, dass auf die Variable xi wegen Optimierung nicht zugegriffen werden kann dabei will ich doch auf die Variable si zugreifen. Der Rest scheint erstmal zu funzen. Bitte sagt mir, dass da irgendwo ein ganz simpler Anfängerfehler drin steckt, der leicht zu beheben ist

Danke im Voraus
El Mati





Code:
procedure SubcatchmentErstellen;

     var NeuerOutlet: Boolean;
         ci, si, ai, xi: Integer;

       begin
       si:=0;
       for ci:=0 to ConduitQEn-ConduitQAn+1 do
       begin
         setlength(subcatchment,si+1);
         NeuerOutlet:=True;
         
       [color=#ff0000] for xi:=0 to si do if Subcatchment[xi].outlet = ConduitQ[ci].oben then NeuerOutlet:=False;
         if NeuerOutlet then
         begin
           Subcatchment[si].Outlet:= ConduitQ[ci].Oben;[/color]
         
           Subcatchment[si].Bezeichnung:=IntToStr(si+2);
           for ai:=0 to AreaEn-AreaAn+1 do begin
             if Area[ai].Haltung = ConduitQ[ci].Bezeichnung then begin
                 Subcatchment[si].Flaeche:=Area[ai].Flaeche;
                 case area[ai].Neigungsklasse of
                    1: Subcatchment[si].Neigung:='0.5';
                    2: Subcatchment[si].Neigung:='2.5';
                    3: Subcatchment[si].Neigung:='7.0';
                    4: Subcatchment[si].Neigung:='12 ';
                    5: Subcatchment[si].Neigung:='15 ';
                 end; {case}
                 case area[ai].flaechenart of
                    1: Subcatchment[si].versiegelung:=0;
                    2..3: Subcatchment[si].versiegelung:=100;
                 end; {case}
             end; {of if Area[ai].Bezeichnung = ConduitQ[ci].Bezeichnung then}
           end; {for ai}
         end
         else
         begin
            for ai:=0 to AreaEn-AreaAn+1 do begin
             if Area[ai].Haltung = ConduitQ[ci].Bezeichnung then
             begin
               case area[ai].flaechenart of
                  1: Subcatchment[si].versiegelung:= Subcatchment[si].versiegelung * Subcatchment[si].flaeche / (Subcatchment[si].flaeche+area[ai].flaeche);
                  2..3: Subcatchment[si].versiegelung:=(Subcatchment[si].versiegelung * Subcatchment[si].flaeche + Area[ai].Flaeche) / (Subcatchment[si].flaeche+area[ai].flaeche);
               end;
               Subcatchment[si].Flaeche:=Area[ai].Flaeche+Subcatchment[si].Flaeche;
             end;
            end;
          end; {else}

          inc(si);
        end;


     end;
  Mit Zitat antworten Zitat