AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Innerhalb eines Typ (record) den gleichen Typ verwenden?
Thema durchsuchen
Ansicht
Themen-Optionen

Innerhalb eines Typ (record) den gleichen Typ verwenden?

Ein Thema von Mike07 · begonnen am 26. Jan 2009 · letzter Beitrag vom 3. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Mike07

Registriert seit: 11. Sep 2007
20 Beiträge
 
Delphi 7 Personal
 
#1

Innerhalb eines Typ (record) den gleichen Typ verwenden?

  Alt 26. Jan 2009, 16:06
Gibt es eine Möglichkeit für das im Titel beschriebene Problem (hoffe das es verständlich ist)?

Hier mal ein konkretes Beispiel von mir:

Delphi-Quellcode:
    TPunkt = record
    X: integer;
    Y: integer;
    Abstand: real;
    Index: cardinal;
    Punkt1, Punkt2: TPunkt;
end;
So würde ich es am liebsten haben, aber das funktioniert nicht.
Als Abhilfe habe ich jetzt erstmal TPoint genommen, aber das wirft bei meinem Programm wieder andere Probleme auf...
Könnte man das irgendwie mit Zeigern machen oder geht das grundsätzlich nicht?
Michael
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 26. Jan 2009, 16:08
Mit Zeigern würde es gehen:
Delphi-Quellcode:
PPunkt = ^TPunkt;
TPunkt = record
    X: integer;
    Y: integer;
    Abstand: real;
    Index: cardinal;
    Punkt1, Punkt2: PPunkt;
end;
Ohne aber nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Mike07

Registriert seit: 11. Sep 2007
20 Beiträge
 
Delphi 7 Personal
 
#3

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

  Alt 26. Jan 2009, 16:22
ah, danke...das teste ich gleich mal aus!
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

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

  Alt 26. Jan 2009, 16:27
So wie du das gepostet hast, solltest du dir allerdings Gedanken darüber machen, ob das vom OOP-Gedanken her sinnvoll ist.

Ein Punkt ist eben erstmal nur X,Y. Was darüber hinausgeht, wird von Punkt abgeleitet oder Punkt wird in anderen Klassen verwendet, aber kaum in sich selber
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 26. Jan 2009, 16:29
Z.B. in eigener Listenklasse TPunktListe o.ä.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 26. Jan 2009, 16: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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#7

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

  Alt 26. Jan 2009, 16:32
Na, überleg dir lieber erstmal etwas genauer, was du willst: Dein Code-Fragment würde einen Recordtyp definieren, der u.a. 2x sich selbst zur Gänze enthalten würde. Da seh ich ein logisches Problem.
Uli Gerhardt
  Mit Zitat antworten Zitat
Mike07

Registriert seit: 11. Sep 2007
20 Beiträge
 
Delphi 7 Personal
 
#8

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

  Alt 26. Jan 2009, 16:56
ja, das ist wohl wahr...ich wusste aber ja nicht wie ich das sonst machen sollte und um das darzustellen, was ich so grob wollte, habe ich mich eben meines 1. Irrtums bedient

ansonsten stellen Punkt1 und Punkt2 Punkte da, die in Beziehung zu TPunkt stehen...
Michael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 26. Jan 2009, 18:00
keine Sorge, zum Lernen sind wir ja hier ... außerdem sind diesem Irrtum schon viele erlegen (hatte es auch mal versucht )
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Mike07

Registriert seit: 11. Sep 2007
20 Beiträge
 
Delphi 7 Personal
 
#10

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

  Alt 2. Feb 2009, 21:52
dann bin ich ja beruhigt
naja, ich muss auch noch viel lernen...
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz