![]() |
Variablen in einer Schleifen ansprechen?
Hallo,
habe ein Syntaxproblem mit dem Ansprechen von Variablen. Ich habe folgenden Record definiert:
Code:
Um nun die Laufzeiten 1 - 11 zu überprüfen, nutze ich bisher den unschönen Code
TZwischenZeiten = record
Startnr : integer; Disziplin : String[41]; Charakter : integer; ZwischenZeiten : integer; MaxZwischenZeiten : integer; LaufZeit1 : TTime; LaufZeit2 : TTime; LaufZeit3 : TTime; LaufZeit4 : TTime; LaufZeit5 : TTime; LaufZeit6 : TTime; LaufZeit7 : TTime; LaufZeit8 : TTime; LaufZeit9 : TTime; LaufZeit10 : TTime; Laufzeit11 : TTime; Uhrzeit : TDateTime; Status : String[6];
Code:
Kann ich den Code optimieren, in dem ich das ganze in einer Schleife durchlaufe?
if Laeufer^.Laufzeit1 <> 0 then
begin Laeufer^.LaufZeit1 := NettoZeit; Break; end; if Laeufer^.Laufzeit2 <> 0 then begin Laeufer^.LaufZeit3 := NettoZeit; Break; end; if Laeufer^.Laufzeit3 <> 0 then begin Laeufer^.LaufZeit3 := NettoZeit; Break; end; usw. usw.
Code:
Hab leider noch keine Variante gefunden, im Quelltext Teile der Variablenbezeichnung durch Variablen zu ersetzen.
for i := 1 to 11 do
begin if Laeufer^.Laufzeit[i] <> 0 then <--- Hier sagt der Compiler "Undefinierte Bezeichner Laufzeit", was ja auch logisch ist, da der Bezeichner ja Laufzeit1, Laufzeit2 usw. heißt begin Laeufer^.LaufZeit[i] := NettoZeit; Break; end; end; Vielen Dank für Eure Hilfe Steffen |
AW: Variablen in einer Schleifen ansprechen?
Hallo,
wenn Du indiziert auf laufzeit zugreifen willst, solltest Du zumindest die LAufzeit als Array definieren.
Delphi-Quellcode:
Grüße
TZwischenZeiten = record
Startnr : integer; Disziplin : String[41]; Charakter : integer; ZwischenZeiten : integer; MaxZwischenZeiten : integer; LaufZeit : Array[1..11] of TTime; Uhrzeit : TDateTime; Status : String[6]; Klaus |
AW: Variablen in einer Schleifen ansprechen?
@Klaus: 6 setzen und schämen. Arrays doch bitte mit 0 (also [0..10]) anfangen lassen ;).
Der array verhält sich sonst "anders" als andere arrays, wie man sie sonst so in Delphi findet und in einer ForSchleife nutzt. edit @Runningsoft: heißt natürlich dass deine schleife auch von 0-10 gehen muss ;). MFG Memnarch |
AW: Variablen in einer Schleifen ansprechen?
Danke für den Tipp mit dem Array, ich glaub, das ist die Lösung.
Grüße Steffen |
AW: Variablen in einer Schleifen ansprechen?
Zitat:
Ich lasse meine Arrays zwar auch immer bei 0 starten, aber mein Info-Lehrer von früher hat den anderen Schülern immer gesagt, man sollte das besser bei 1 starten lassen, dann wäre das Zählen auch einfacher (...). Auf meinen Einwand, es sei "korrekter" es bei 0 starten zu lassen meinte er das mache intern keinen Unterschied. Also ich könnte mir vorstellen, dass es einen Unterschied macht. Nur welchen?^^ |
AW: Variablen in einer Schleifen ansprechen?
Zitat:
Delphi-Quellcode:
Dann ists auch egal, ob das Array bei 0 oder 1 anfängt ;)
for i := Low(Laeufer^.Laufzeit) to High(Laeufer^.Laufzeit) do
begin {...} end; |
AW: Variablen in einer Schleifen ansprechen?
@schlecki
Danke für den Tipp. Wenn ich das richtig sehe, kann ich so problemlos mein Array erweitern und muss dann hinterher nicht an tausend Stellen im Programm die Schleifen auf die neue Arraygröße umbauen. |
AW: Variablen in einer Schleifen ansprechen?
@Flips: nein intern macht es keinen unterschied, es irritiert allerdings den programmierer. Außer dem Wochentag array in Delphi beginnt alles bei 0. Eine ForSchleife kann dan schnell so "falsch" umgesetzt werden.
Delphi-Quellcode:
Hat mir bei dem wochentag array schön ne AV geschmissen weil der bei 1 anfängt.
for i := 0 to Max - 1 do
Mit Falsch meinte ich halt nur den von dir dem Lehrer gegenüber genannten Korrekten anwendungsfall. MFG Memnarch |
AW: Variablen in einer Schleifen ansprechen?
Solange man
Delphi-Quellcode:
verwendet, dann kann man verwenden, was man will.
for idx := Low(MyArr) to High(MyArr) do
Klar ist es besser bei 0 zu beginnen, wärend ich gewisse Char-Arrays auch gerne mal mit 1 beginne, wegen der Analogie zum String. Und sonst nutze ich auch manchmal andere Startindize, wenn dieses dann eine bessere "logische" Zuweisung gewährleistet. PS: Nicht vergessen, aber der ShortString, also auch der Typ String[x], ist und bleibt ANSI. |
AW: Variablen in einer Schleifen ansprechen?
Zitat:
und "alles" ist ja auch ein wenig kurz gegriffen (shortstring) Einer der großen Vorteile von Delphi ist ja daß ich problemlos solche Arrays definieren kann
Code:
Das ist vor allem bei der "Übersetzung" von Fremdstrukturen sinnvoll, oder wie himitsu anmerkte:
SecAdress : array [20..125] of ansichar;
Zitat:
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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