![]() |
Record über Klasse für andere Klassen sichtbar machen
Hallo,
ich habe mir ein Record Definiert. Das habe ich so gemacht:
Delphi-Quellcode:
Über die Funktion property wollte ich dies jetzt für andere Klassen sichbar machen.
type
TIntervall = record PosX : Integer; PosY : Integer; NegX : Integer; NegY : Integer; end; Das habe ich so gemacht:
Delphi-Quellcode:
Wenn ich jetzt auf einer anderen Klasse auf meine Eigenschaft zugreifen will, dann sagt mir der Compiler, dass der Linken Seite nichts zugewiesen werden kann. Was habe ich falsch gemacht???
type
TKlasse = class private FIntervall : TIntervall; public published property Intervall : TIntervall Read FIntervall Write FIntervall; end;
Delphi-Quellcode:
k.Intervall.PosX:=2; // Hier kommt der Fehler
|
Re: Record über Klasse für andere Klassen sichbar machen
Das geht einfach nicht. Der Getter der Property erstellt eine Kopie des records, und der kannst du nichts zuweisen. Mach aus dem Record einfach eine Klasse, dann geht das.
|
Re: Record über Klasse für andere Klassen sichtbar machen
Hi.
Das geht schon, bei mir jedenfalls wenn ich das Problem richtig verstanden habe. Probier mal das:
Delphi-Quellcode:
Bei mir gibt er dann die gewünschte '5' aus.
type
TIntervall = record PosX : Integer; PosY : Integer; NegX : Integer; NegY : Integer; end; type TMyClass = class private FIntervall : TIntervall; public property Intervall : TIntervall read FIntervall write FIntervall; end; [...] var Meins: TMyClass; buffer : TIntervall; begin Meins := TMyClass.Create; try Buffer.PosX := 5; Meins.Intervall := Buffer; ShowMessage(IntToStr(Meins.Intervall.PosX)); finally Meins.Free; end; [Edit=Versuche eine Begründung] Ich glaube es liegt daran, dass du mit (Meins.Intervall.PosX := 5) nichts erreichen wirst, weil die Property ja nur für den Record allgemein gilt und nicht für dessen Variablen. Wenn du stattdessen einen ganzen Record übergibst (Meins.Intervall := Buffer;) in welchem die gewünschten Variablen drin sind, dann kann die Property das auch verarbeiten, da sie auch für den Record-Typ ausgelegt ist. [/Edit] |
Re: Record über Klasse für andere Klassen sichtbar machen
Kann ich nicht auch das gewünschte Ziel erreichen, ohne einen Buffer???
|
Re: Record über Klasse für andere Klassen sichtbar machen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz