Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: Innerhalb eines Typ (record) den gleichen Typ verwenden?

  Alt 26. Jan 2009, 17:30
Aber vergiß nicht, für TPunkt muß natürlich Speicher reserviert werden.
Delphi-Quellcode:
PPunkt := ^TPunkt;
TPunkt = record
  ...
  Punkt1, Punkt2: PPunkt;
end;
und das Volgendes nicht geht, könntest du dir eventuell selber denken.
Delphi-Quellcode:
TPunkt = record
  ...
  Punkt1, Punkt2: TPunkt;
end;
Denn als Typ (PPunkt ist nur als Pointer) wird immer der Platz reserviert, welcher der Typ belegt
und da so immer wieder der Typ in sich selber drin wäre, dann würde dieses in einer Endlosschleife enden und unendlich Speicher benötigen .
Delphi-Quellcode:
TPunkt = record
  ...
  Punkt1, Punkt2 = record
    ...
    Punkt1, Punkt2 = record
      ...
      Punkt1, Punkt2 = record
        ...
        Punkt1, Punkt2 = record
          ...
          Punkt1, Punkt2: ....................
        end;
      end;
    end;
  end;
end;
[add]
stimmt, *auf nachfolgenden Post guck*

er ist ja 2-mal in sich drin ... getrennt sieht's natürlich noch schlimmer aus
Delphi-Quellcode:
TPunkt = record
  ...
  Punkt1 = {TPunkt}record
    ...
    Punkt1 = {TPunkt}record
      ...
      Punkt1 = {TPunkt}record
        ...
        Punkt1: ...
        Pinkt2: ...
      end;
      Punkt2 = {TPunkt}record
        ...
        Punkt1: ...
        Pinkt2: ...
      end;
    end;
    Punkt2 = {TPunkt}record
      ...
      Punkt1 = {TPunkt}record
        ...
        Punkt1: ...
        Pinkt2: ...
      end;
      Punkt2 = {TPunkt}record
        ...
        Punkt1: ...
        Pinkt2: ...
      end;
    end;
  end;
  Punkt2 = {TPunkt}record
    ...
    Punkt1 = {TPunkt}record
      ...
      Punkt1 = {TPunkt}record
        ...
        Punkt1: ...
        Pinkt2: ...
      end;
      Punkt2 = {TPunkt}record
        ...
        Punkt1: ...
        Pinkt2: ...
      end;
    end;
    Punkt2 = {TPunkt}record
      ...
      Punkt1 = {TPunkt}record
        ...
        Punkt1: ...
        Pinkt2: ...
      end;
      Punkt2 = {TPunkt}record
        ...
        Punkt1: ...
        Pinkt2: ...
      end;
    end;
  end;
end;
$2B or not $2B
  Mit Zitat antworten Zitat