![]() |
Hilfe bei Array
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 :-D . 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 :wink: 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; |
Re: Hilfe bei Array
So wie ich das sehe, wird das xi rauoptimiert, weil du es nie benutzt. Du setzt si auf 0 und lässt mit dem xi eine Schleife von 0 bis si laufen. Also von 0 bis 0.
0 weniger 0 = 0 Schleifendurchläufe. Delphi -schlau wie es ist- erkennt, dass die Schleife niemals nicht durchlaufen wird und schmeisst es aus dem Compilat gleich raus. Das dürfte allerdings eigentlich nur einen Hinweis beim, aber keine Fehler geben. |
Re: Hilfe bei Array
Danke Treffnix, hast natürlich recht. War wohl vorhin zu lang vorm Puter oder ich bin einfach.... :stupid:
Gruß Mati |
Re: Hilfe bei Array
Zitat:
MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz