![]() |
Auf Teil eines Records in eine Klasse zugreifen
Gegeben sei folgende Definition:
Delphi-Quellcode:
Gibt es eine Möglichkeit, den Rekord so direkt anzusprechen, oder muss ich aus ihm ebenfalls eine Klasse machen?
type
TMyRecord = record S: string; I: integer; end; TMyClass = class private FMyRecord: TMyRecord; public property MyRecord: TMyRecord read FMyRecord write FMyRecord; end; [...] var MyClass: TMyClass; [...] MyClass:=TMyClass.Create; MyClass.MyRecord.S:='text'; // <--- FEHLER: 'Left side cannot be assigned to' MyClass.MyRecord.I:=5; // <--- FEHLER: 'Left side cannot be assigned to' |
Re: Auf Teil eines Records in eine Klasse zugreifen
Guten Morgen, Grishnak.
Ja und Nein. Für den Typ einer property gelten die gleichen Einschränkungen wie für Rückgabewerte von Funktionen.
Delphi-Quellcode:
Wenn du deinen Record zu einer Klasse machst, dann treten lediglich Create und Free an die Stelle von New und Dispose.
type
PMyRecord = ^TMyRecord; TMyRecord = record S: string; I: integer; end; TMyClass = class private FMyRecord: PMyRecord; public constructor Create; destructor Destroy; override; property MyRecord: PMyRecord read FMyRecord write FMyRecord; end; var MyClass: TMyClass; constructor TMyClass.Create; begin inherited Create; New(FMyRecord); end; destructor TMyClass.Destroy; begin Dispose(FMyRecord); inherited; end; procedure TDemoForm.FormCreate(Sender: TObject); begin MyClass := TMyClass.Create; MyClass.MyRecord.S := 'text'; MyClass.MyRecord.I := 5; ShowMessage(MyClass.MyRecord.S); MyClass.Free; end; Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 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-2025 by Thomas Breitkreuz