Einzelnen Beitrag anzeigen

pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Porblem mit Arrays, die Pointer auf Record sind

  Alt 28. Mär 2007, 21:10
Hallo darthdungeon und willkommen in der DP!

Ich weiß leider nicht genau wie du es lösen willst. Ich habe hier mal einen Ansatz für dich.

Der Type- und Var-Abschnitt sieht meiner Meinung nach so aus:
Delphi-Quellcode:
type
  // TPoint existiert bereits in der Unit Types, kann also weggelassen werden falls, du
  // aus TPoints TPoint machst!
  
  // Einen Zeiger auf einen TPoint definieren.
  PPoint = ^TPoint;


  // Zeiger auf eine Kante.
  PEdge = ^TEdge;
  // Kante definieren.
  TEdge = record
    point1, point2: PPoint; // Und hier den Zeiger benutzen.
    next_edge: PEdge;
  end; // TEdge

  TArea = record
    edge: TEdge;
  end; // TArea

...

var
  area_list: array of TArea;
  edge_list: array of TEdge;
  point_list: array of TPoint;

Die Implementierung wird dann wie folgt angepasst:
Delphi-Quellcode:
// Bleibt wie gehabt.
point_list[0].x := 100;
point_list[0].y := 100;
...

// Hier muss man Delphi nun sagen, dass man einen Zeiger auf einen TPoint hat.
edge_list[0].point1 := @point_list[0];
edge_list[0].point2 := @point_list[1];
...

// So wird der Zeiger initialisiert.
edge_list[0].next_edge := @edge_list[1];


// Zum Zugriff auf die Zeiger musst du dann später so vorgehen.
ShowMessage( IntToStr( edge_list[0].point1^.x ));
ShowMessage( IntToStr( edge_list[0].next_edge^.point1^.x ));
Achtung: Ich hab das leider nicht getestet!

Gruß,
pszopp
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat