AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Auf Teil eines Records in eine Klasse zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Teil eines Records in eine Klasse zugreifen

Offene Frage von "Grishnak"
Ein Thema von Grishnak · begonnen am 11. Mär 2006 · letzter Beitrag vom 12. Mär 2006
Antwort Antwort
Benutzerbild von Grishnak
Grishnak

Registriert seit: 15. Sep 2005
Ort: Neu-Ulm
111 Beiträge
 
RAD-Studio 2009 Arc
 
#1

Auf Teil eines Records in eine Klasse zugreifen

  Alt 11. Mär 2006, 23:59
Gegeben sei folgende Definition:

Delphi-Quellcode:
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'
Gibt es eine Möglichkeit, den Rekord so direkt anzusprechen, oder muss ich aus ihm ebenfalls eine Klasse machen?
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Auf Teil eines Records in eine Klasse zugreifen

  Alt 12. Mär 2006, 06:46
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:
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;
Wenn du deinen Record zu einer Klasse machst, dann treten lediglich Create und Free an die Stelle von New und Dispose.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz