zabarax
26.04.2004, 21:14
Hallo, ist es möglich aus einer verschachtelten Schleife (die sich in einer Funktion befindet) zu springen, ohne goto zu verwenden aber einen Wert zurückzugeben?
Die Schleife befindet sich in einer Funktion mit dem Rückgabewert BOOLEAN. In der Sprache C würde ich einfach return XYZ schreiben und beide Schleifen wären abgebrochen mit Pascal geht das nicht so einfach. Wenn ich ein break verwende, beendet er die erste Schleife nicht jedoch die zweite.
Meine Idee war folgende. In der inneren schleife gebe ich einen Wert zurück,
z.B. FUNKTIONsname:=FALSE und verlasse diese Schleife mit einem break,
in der äußeren Schleife überprüfe ich dann immer, ob Funktionsname=false ist.
Wenn es False is, beende ich auch die äußere Schleife und kann meinen Rückgabewert ja beim Funktionsaufruf abfragen.
Irgendwie geht das mit Pascal aber nicht.
FUNCTION check(startwert:integer; endwert:integer; XKoordinate:integer):BOOLEAN;
for MIN_X:=Min_x TO Max_X DO
BEGIN
for momentan_Wert:=Startwert TO Endwert DO
BeGIN
if (XXX=TRUE) THEN
BEGIN
check:=false;
BREAK;
END;
END;
if (check=false) THEN
BEGIN
break;
{hier soll er dann aus der äußeren Schleife springen}
END;
END;
grüße
zabarax
Die Schleife befindet sich in einer Funktion mit dem Rückgabewert BOOLEAN. In der Sprache C würde ich einfach return XYZ schreiben und beide Schleifen wären abgebrochen mit Pascal geht das nicht so einfach. Wenn ich ein break verwende, beendet er die erste Schleife nicht jedoch die zweite.
Meine Idee war folgende. In der inneren schleife gebe ich einen Wert zurück,
z.B. FUNKTIONsname:=FALSE und verlasse diese Schleife mit einem break,
in der äußeren Schleife überprüfe ich dann immer, ob Funktionsname=false ist.
Wenn es False is, beende ich auch die äußere Schleife und kann meinen Rückgabewert ja beim Funktionsaufruf abfragen.
Irgendwie geht das mit Pascal aber nicht.
FUNCTION check(startwert:integer; endwert:integer; XKoordinate:integer):BOOLEAN;
for MIN_X:=Min_x TO Max_X DO
BEGIN
for momentan_Wert:=Startwert TO Endwert DO
BeGIN
if (XXX=TRUE) THEN
BEGIN
check:=false;
BREAK;
END;
END;
if (check=false) THEN
BEGIN
break;
{hier soll er dann aus der äußeren Schleife springen}
END;
END;
grüße
zabarax