Autor |
Beitrag |
soisseteben
      
Beiträge: 111
Win XP
D7
|
Verfasst: 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:
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 = (ToImage = ^Rec1, ToText = ^Rec2);
Rec3 = record a : String; Zeiger : TPointertype; 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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Sa 16.09.06 22:12
Pointer
_________________ Markus Kinzler.
|
|
soisseteben 
      
Beiträge: 111
Win XP
D7
|
Verfasst: 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? 
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 16.09.06 22:29
also TPointertype = Pointer; lies sich bei mir einwandfrei Compilieren
Ich werd etwas genauer:
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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Sa 16.09.06 22:30
Eine variable vom Typ Pointer kann Zeiger auf jeden beliebigeb Typ aufnehmen.
_________________ Markus Kinzler.
|
|
soisseteben 
      
Beiträge: 111
Win XP
D7
|
Verfasst: 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
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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: 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 
      
Beiträge: 111
Win XP
D7
|
Verfasst: Sa 16.09.06 22:52
Aber ich kann doch einen Zeiger von Typ "Zeiger auf Rec1" definieren:
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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: 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
|
Verfasst: 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 
|
|