Autor Beitrag
soisseteben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 111

Win XP
D7
BeitragVerfasst: Sa 16.09.06 22:07 
Hallo,

Hät noch 'n drittes Prob heute. Also ich habe in einem Record einen Zeiger, dessen Typ variabel sein muss. Wie realisier ich sowas? Ich hatte folgende prinzipielle Idee, die aber leider nicht zu compilieren geht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
type
  Rec1 = record     
    i: integer;
    a: real;
  end;

  Rec2 = record
    i: integer;
    a: String;
  end;

  TPointertype =      // der Zeigertyp
    (ToImage = ^Rec1,
     ToText = ^Rec2);

  Rec3 = record
    a : String;
    Zeiger : TPointertype;  //Zeiger variable Typs, der entweder auf Rec1 oder Rec2   zeigen soll
  end;


"ToImage = ^Rec1" - das kann man so nicht angeben. Wahrscheinlich geh ich da ganz falsch ran, aber mir fällt nix besseres ein.

Danke schonmal

soisset
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Sa 16.09.06 22:12 
Pointer

_________________
Markus Kinzler.
soisseteben Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 111

Win XP
D7
BeitragVerfasst: Sa 16.09.06 22:26 
ähm, tschuldige aber könntest du deine Antwort bitte ein wenig präzisieren? Ausser das ein Pointer ein Zeiger ist und in der Delphi-Hilfe nichts passendes unter diesem Namen steht habe ich so keine Anhaltspunkte.

Oder ist meine Frage echt so dumm gestellt? :gruebel:
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 16.09.06 22:29 
also   TPointertype = Pointer; // der Zeigertyp lies sich bei mir einwandfrei Compilieren :gruebel:
Ich werd etwas genauer:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Procedure TForm1.Button1Click(Sender: TObject);
Var
    x: Pointer;
    i: integer;
Begin
    x := @Button1;
    x := @Form1;
    x := @i;
End;

Ich kann also x alle arten von Pointern zuweisen. Aber ich glaub, das hast du mit Variablen Pointertyp nicht gemeint...

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.


Zuletzt bearbeitet von JayEff am Sa 16.09.06 22:32, insgesamt 1-mal bearbeitet
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Sa 16.09.06 22:30 
Eine variable vom Typ Pointer kann Zeiger auf jeden beliebigeb Typ aufnehmen.

_________________
Markus Kinzler.
soisseteben Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 111

Win XP
D7
BeitragVerfasst: Sa 16.09.06 22:38 
nunja, so ganz hatte ich das nicht gemeint, aber ich glaub damit geht es auch. Ich meine, das wenn ich

ausblenden Delphi-Quelltext
1:
  rec3.Zeiger := ToImage;					


angebe, rec.Zeiger automatisch einen Zeiger auf Rec1 darstellt. So nehm ich ne if-anweisung und weis das damit zu. Oder geht das auch so wie ich bewschrieben hab?

Danke auf jeden Fall
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 16.09.06 22:43 
Rec1 ist ja noch nichts, auf das ein Porter zeigen kann! Erst musst du eine Variable vom Typ Rec1 deklarieren und dann kannst du auf diese Variable zeigen.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
soisseteben Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 111

Win XP
D7
BeitragVerfasst: Sa 16.09.06 22:52 
Aber ich kann doch einen Zeiger von Typ "Zeiger auf Rec1" definieren:

ausblenden Delphi-Quelltext
1:
  PZeigerAufRec1 = ^Rec1;					


Ich glaub aber, das ich da was will was nicht möglich ist (also die var-Typen variabel zu machen). Schade, aber es auch mit Pointer
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 16.09.06 22:56 
Ahh du willst den TYP einer Variable zur Laufzeit verändern? Das ist IIRC nicht möglich... :(

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.09.06 02:35 
also zum pointer guck dir mal die hilfe an.

dies ist ein generischer zeigertyp, der auf eine addy im HS guckt ohne, dass er weis was dahinter ist. daher kannst du das teil dann auch mit allem möglichen casten.

ist ungefähr das selbe wie int/integer in c/pascal... --> man weiss nie was da rauskommt ;-)