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;