AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe bei Array

Ein Thema von El Mati · begonnen am 14. Mär 2005 · letzter Beitrag vom 15. Mär 2005
Antwort Antwort
El Mati

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

Hilfe bei Array

  Alt 14. Mär 2005, 16: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
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#2

Re: Hilfe bei Array

  Alt 14. Mär 2005, 17:11
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.
  Mit Zitat antworten Zitat
El Mati

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

Re: Hilfe bei Array

  Alt 14. Mär 2005, 21:19
Danke Treffnix, hast natürlich recht. War wohl vorhin zu lang vorm Puter oder ich bin einfach....
Gruß Mati
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Hilfe bei Array

  Alt 15. Mär 2005, 00:22
Zitat von Treffnix:
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.
Hmm, das ist so nicht ganz richtig. Wenn eine for-Schleife von 0 bis 0 läuft, oder allgemein gesagt wenn Start- und Endwert des Zählers gleich sind, wird die Schleife genau einmal durchlaufen, nicht null mal.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz