03. marts 2003 - 22:25
Der er
5 kommentarer og 1 løsning
object pointer
Jeg har laver en klasse som hedder: Vin Jeg skal i en anden klasse lave en pointer til et object af klassen Vin -Hvordan gøres det? Jeg har gjort sådan her: myPointer: ^Vin Men min compiler kan ikke li' det!!!
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
03. marts 2003 - 22:33
#1
Lav en type PVin = ^Vin; og derefter en var myPointer: PVin;
03. marts 2003 - 22:47
#2
[Error] node.pas(9): 'Vin' is not a type identifier
03. marts 2003 - 22:48
#3
hvad hvis du bare kører en pointer(vin) ?
03. marts 2003 - 22:49
#4
pointer(&vin) evt?
04. marts 2003 - 08:28
#5
Det kan jeg da godt forstå at compileren ikke kan lide. Det er også noget vrøvl ... Lad os statre fra bunden af : type TPlacering = (HosJens, AndetSted); TVin = class private FGodvin: Boolean; FPlacering: TPlacering; procedure SetGodvin(const Value: Boolean); function GetGodvin: Boolean; procedure SetPlacering(const Value: TPlacering); public property Godvin: Boolean read GetGodvin write SetGodvin; property Placering: TPlacering read FPlacering write SetPlacering; end; { TVin } function TVin.GetGodvin: Boolean; begin Result := FPlacering = HosJens; end; procedure TVin.SetGodvin(const Value: Boolean); begin FGodvin := Value; end; procedure TVin.SetPlacering(const Value: TPlacering); begin FPlacering := Value; end; Så laver du dig en variabel af typen : procedure TForm1.FormCreate(Sender: TObject); var Vin : TVin; begin end; Du har nu en Object Pointer (en pointer til et object) UANSET om du har kaldt constructoren på den eller ej. Lad os lave et forsøg : procedure TForm1.FormCreate(Sender: TObject); var Vin : TVin; p : Pointer; begin ShowMessage(IntToStr(SizeOf(Vin))); Vin := TVin.Create; ShowMessage(IntToStr(SizeOf(Vin))); FreeAndNil(vin); ShowMessage(IntToStr(SizeOf(Vin))); ShowMessage(IntToStr(SizeOf(p))); end; Det giver 4 hele vejen ned ! Endnu en indikation på manden nok ikke er helt fuld er det følgende : procedure TForm1.FormCreate(Sender: TObject); var Vin : TVin; p : Pointer; begin Vin := TVin.Create; p := vin; end; Den æder compileren fint !!! Så en variabel af en klasse type, i det her tilfælde Vin. Er en pointer !!! Jens B
Kurser inden for grundlæggende programmering