Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Abbruchbedingung bei dyn. Array gesucht


D. Annies - Do 14.01.10 10:46
Titel: Abbruchbedingung bei dyn. Array gesucht
Hi, Delpher,

ich habe dynamische Arrays of Integer namens Stu_Bez und Stu_Bez_Anz;
Zurzeit bestehen sie aus 6 Elementen.

Durch den Inhalt von Stu_Bez bestimme ich die Vorgängerzahl von k, wenn also k = 7 ist, brauche ich zur Weiterverarbeitung das 6. Element von Stu_Bez, bzw. Stu_Bez_Anz

Ich gehe also mit nr durch das Array, aber wie breche ich die Schleife ab (wenn ich also alle Elemente geprüft habe)?

Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
k := 7;  // irgeneine Zahl von 2 bis 7
nr := 0;
repeat
  if Stu_Bez[nr] = k-1 then
    nachfolger := nachfolger + Stu_Bez_Anz[nr]
  else
    inc(nr);
until nr >          // keine Ahnung


Danke für Hilfe,
Detlef


jasocul - Do 14.01.10 10:54

Vielleicht so?


Delphi-Quelltext
1:
2:
3:
4:
5:
k := 7;  // irgeneine Zahl von 2 bis 7
nr := 0;
while Stu_Bez[nr] <> k-1 do
  inc(nr);
nachfolger := nachfolger + Stu_Bez_Anz[nr];


Eine Prüfung, dass du nicht über das Ende des Array gehst, wäre vielleicht auch noch sinnvoll. Und natürlich eine Anfangsprüfung, ob das Array überhaupt ein Element besitzt.


D. Annies - Do 14.01.10 11:06

Super, Peter,
vielen Dank für diese cooole Lösung :))
Detlef


Nersgatt - Do 14.01.10 11:11

Du kannst auch mit high und low abfragen, wo die obere bzw. untere Grenze des Arrays liegt (siehe Hilfe).


D. Annies - Do 14.01.10 11:52

Danke auch an dich, Jens!
Gruß, Detlef


jasocul - Do 14.01.10 13:49

user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Du kannst auch mit high und low abfragen, wo die obere bzw. untere Grenze des Arrays liegt (siehe Hilfe).

War auch mein erster Gedanke.
Allerdings werden ja nicht "k" und "nr" miteinander verglichen, sondern "k" mit Inhalt des Arrays mit dem Index "nr". Deswegen habe ich von dem Vorschlag abgesehen.


D. Annies - Fr 15.01.10 11:00

Hallo, Peter,
ich habe es so gemacht, wie du vorgeschlagen hast.
Danke, Detlef