Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
5. Apr 2010
Das kann etwas nicht stimmen, denn dann würde es mit und ohne deinen auskommentierten Teil keinen unterschied geben, da dieser in diesem Fall immer True ergeben würde (da ja Links existiert) und es somit keinen Unterschied macht.
Und wenn das Stimmt, dann wäre wohl dein Baum defekt, bzw. er würde nicht deiner Spezifikation entsprechen.
Nja, ich weiß aber auch nicht wie die Daten in...
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
5. Apr 2010
Na weil nach dem ELSE-Block die Funktion zu Ende ist?
Und selbst wenn du es vertauschst, bleibt es dabei, da ENTWEDER der IF-Block ODER der ELSE-Block ausgeführt wird.
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
5. Apr 2010
FUNCTION Pfad(root: TPtr; x: char): string;
var found: Boolean;
BEGIN
found := FALSE;
IF root^.c <> x THEN
BEGIN
IF ((root^.left <> NIL)) THEN
BEGIN
result := '0' + Pfad(root^.left, x);
IF ((NOT found){ AND (root^.right <> NIL)}) THEN
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
5. Apr 2010
Das ab ich gehofft. :mrgreen:
(wobei viele ja gerne globale Variablen verwenden :wall: )
Es ist aber auch immer schön, wenn wichtige Dinge einfach weggelassen werden, so wie z.B. irgendwelche Dekarationen. :zwinker:
So ala:
FUNCTION Pfad(root: TPtr; x: char): string;
VAR fount: Boolean;
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
5. Apr 2010
Wo ist found deklariert?
Wenn du AND (root^.right <> NIL) wegläßt, dann kann es vorkommen, daß root^.right auch mal NIL ist.
Und wenn dieses NIL ist, dann will das nächste (nach dem neuen Aufruf von Pfad) root^ einen NIL-Pointer dereferenzieren, was natürlich nicht geht.
Sicher daß root^.right innerhalb der root^.left-Befingung ausgewertet werden muß?