![]() |
Klasse mit mehreren "ebenen"?
hi,
sitze gerade so an einer klasse, wo ich empfänger-daten und sender-daten und noch viele andere werte speichern möchte. da hab ich mich gefragt, wieso erstellste nich ein record mit name, straße, plz, ort usw, und setzt es einmal für den absender, und einmal für den empfänger usw ein, damit man das ungefähr so ansprechen kann:
Delphi-Quellcode:
doch leider funktioniert das mit den records nicht so, wie ich es mir vorgestellt habe, habe mich ja vorher hier ein wenig informiert :wink:
Bestellung1 := TBestellung.Create;
Bestellung.Absender.Name := 'xyz'; Bestellung.Emfpaenger.PLZ := 52365; Bestellung.BestellNr := 558712; usw... also wie würdet ihr das lösen? danke für die tipps schonmal!! achja, weiß gerade nicht, wie ich das thema besser umschreiben kann, drumm hab ich "ebenen" genutzt, wenn ihr ne passendere beschreibung habt, her damit :) |
Re: Klasse mit mehreren "ebenen"?
Wie sieht die deklaration der Klasse und des Record aus?
|
Re: Klasse mit mehreren "ebenen"?
Na das ist doch eigentlich ganz einfach:
Delphi-Quellcode:
Sollte so funktionieren.
type
TAbsender = record Name: String; end; TEmpfaenger = record PLZ: Cardinal; end; TBestellung = class ... public Absender: TAbsender; Empfaenger: TEmpfaenger; ... end; |
Re: Klasse mit mehreren "ebenen"?
Zitat:
|
Re: Klasse mit mehreren "ebenen"?
Zitat:
Zitat:
Zitat:
|
Re: Klasse mit mehreren "ebenen"?
Hi,
Wenn Du einfach nur die Daten speichern willst geht das doch Problemlos mit einem Record.
Delphi-Quellcode:
Eine Klasse würde ich nur hernehmen um einen array von TBestellung zu verwalten/durchsuchen oder einzelne Datensätze abzuspeichern.
type
TAbsender = record Name: string; PLZ: Cardinal; end; TEmpfaenger = record PLZ: Cardinal; end; TBestellung = record Absender: TAbsender; Empfänger: TEmpfaenger; end; .... procedure TForm1.Button1Click(Sender: TObject); var Bestellung: TBestellung; begin if CheckBestellDaten then begin Bestellung.Absender.Name:= 'Name'; Bestellung.Absender.PLZ:= 55555; Bestellung.Empfänger.PLZ:= 55555; else Showmessage('Bitte überprüfen Sie das Formular.'); //ka ob deine Daten von einem Formular stammen ;) end; |
Re: Klasse mit mehreren "ebenen"?
Nenene, von Property war nicht die Rede.
Mit ner Property kannst du nur den GANZEN Record setzen, nicht Teile davon. Dann musst du ne Klasse nehmen, was in diesem Fall kein Problem ist, schreib einfach in den Konstruktor für TEmpfaenger und TAbsender jeweils ein Create und im Destructor ein Free rein. Achja: Und wenn du die Records public machst, getzt trotzdem nicht mit Propertys. |
Re: Klasse mit mehreren "ebenen"?
Zitat:
|
Re: Klasse mit mehreren "ebenen"?
Zitat:
Delphi-Quellcode:
type
TAbsender = packed record Name: string[255]; PLZ: Cardinal; end; TAbsenderClass = class(TObject) private absender: array of TAbsender; // oder TObjectList function GetName(const Index: Integer): string; procedure SetName(const Index: Integer; const Value: string); function GetPLZ(const Index: Integer): Cardinal; procedure SetPLZ(const Index: Integer; const Value: Cardinal); public property Name: string index 0 read GetName write SetName; property PLZ: Cardinal index 1 read GetPLZ write SetPLZ; //.. end; |
Re: Klasse mit mehreren "ebenen"?
@Phantom1
Die Index-Direktive ist nur sinnvoll, wenn die Properties sich einen Getter/Setter teilen. Wenn du aber über den Index auf die Elemente des Arrays zugreifen möchtest, dann besser so:
Delphi-Quellcode:
Gruß Hawkeye
type
TAbsender = packed record Name: string[255]; PLZ: Cardinal; end; TAbsenderClass = class(TObject) private absender: array of TAbsender; // oder TObjectList function GetName(aIndex: Integer): string; procedure SetName(aIndex: Integer; const aValue: string); function GetPLZ(aIndex: Integer): Cardinal; procedure SetPLZ(aIndex: Integer; aValue: Cardinal); public property Name [aIndex: integer]: string read GetName write SetName; property PLZ [aIndex: integer]: Cardinal read GetPLZ write SetPLZ; //.. end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 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