Autor Beitrag
McC
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 03.04.03 14:33 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
type
  TNode=record
    next, prev: ^TNode;
    value: TObject;
  end;

  PNode: ^TNode;
 
 TLinkedList = class
    //werte etc
    first, last: PNode;
    //blabla
end;


so in etwa sieht die Listendefinition aus, die funktioniert so weit auch. Aber dann, in ner anderen Unit:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure DrawFunction1(Werte: TMesswerte);
var Cursor_Messreihe: PNode; //Cursor zur Angabe der betrachteten Messreihe
    Cursor_Messwerte: PNode; //Cursor zum Auslesen der Messwerte in einer Messreihe
    punkt:TMesspunkt;
begin
  Cursor_Messreihe := Werte.Daten.first;
  while Cursor_Messreihe <> nil do begin
    Cursor_Messwerte := TDoubleLinkedList(Cursor_Messreihe^.value).first;
    Punkt := TMessPunkt(Cursor_Messwerte^.value);
    while Cursor_Messwerte <> nil do begin


Der Typecast auf TDoubleLinkedList klappt, der auf TMessPunkt aber nicht. Hat jemand ne Idee woran das liegen kann??
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Do 03.04.03 14:37 
Hi.
ausblenden Quelltext
1:
Punkt := TMessPunkt(Cursor_Messwerte^.value);					

Cursor_Messwerte ist ja auch vom typ PNode...ergo kein wunder, dass er es mit TMessPunkt nicht will!

Edit: Vielleicht postest du mal die deklaration der anderen typen!

_________________
mfg.
mâximôv
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Do 03.04.03 17:27 
Eine bessere Lösung, bei der du dir die Typecasterei sparen kannst ist folgende:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
type
  TLinkedList = class; // forward declaration

  PNode = ^TNode; 
  TNode = record 
    next, prev: PNode; 
    value: TLinkedList; 
  end; 

  TLinkedList = class 
    //werte etc 
    first, last: PNode; 
    //blabla 
  end;

_________________
Ist Zeit wirklich Geld?
McC Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Fr 04.04.03 13:11 
maximus hat folgendes geschrieben:
Hi.
ausblenden Quelltext
1:
Punkt := TMessPunkt(Cursor_Messwerte^.value);					

Cursor_Messwerte ist ja auch vom typ PNode...ergo kein wunder, dass er es mit TMessPunkt nicht will!


Ja, Cursor_Messwerte ist vom Typ PNode, aber Cursor_Messwerte^.value ist doch TObject oder nicht?

@AndyB: Wenn ich den Wert der Listenobjekte vom Typ der Liste definiere bekomme ich ja nie Daten am Ende. Das ganz soll ja so aussehen, dass man in diesem Fall quasi zwei verschachtelte Listen hat, also eine Liste von Listen, und in diesen Listen dann Werte vom Typ TMesspunkt...