![]() |
Re: Array of Record - Einzelne Fixe Elemente?
Delphi-Quellcode:
ungefähr so
TValues = class(TPersistent) // oder was auch immer
private xxx: array of TValue; // dein Record fName: string; protected function Get(Index: Integer): string; virtual; abstract; procedure Put(Index: Integer; const S: string); virtual; public property Strings[Index: Integer]: string read Get write Put; default; property Name: String read fName write fName; end; |
Re: Array of Record - Einzelne Fixe Elemente?
Hi,
du kannst es auch mit einer TObjectList machen. Dabei benutzt du nicht den Record als einzelnes Element, sondern eine eigene Klasse. Etwa so:
Delphi-Quellcode:
Das kannst du dann noch mit diversen Propertys, Getter- und Settermethoden ausschmücken.
TValue = class(TObject)
ValueFrom : string; ValueFromType : string; ValueTo : string; ValueToType : string; ValueSectionA : string; ValueSectionB : string; ValueSectionC : string; ValueSectionD : string; end; Dann verwendest du eine ObjectListe wie folgt:
Delphi-Quellcode:
Gruß oki
TValueList = class(TObjectList)
private FListName : String; // Name der Liste protected function GetItem(Index: Integer): TValue; procedure SetItem(Index: Integer; AObject: TValue); public function Add(AObject: TValue): Integer; function Extract(Item: TValue): TValue; function Remove(AObject: TValue): Integer; function IndexOf(AObject: TValue): Integer; procedure Insert(Index: Integer; AObject: TValue); function First: TValue; function Last: TValue; property Items[Index: Integer]: TValue read GetItem write SetItem; default; property ListName : String read FListName write FListName; end; { TValueList } function TValueList.Add(AObject: TValue): Integer; begin Result := inherited Add(AObject); end; function TValueList.Extract(Item: TValue): TValue; begin Result := TValue(inherited Extract(Item)); end; function TValueList.First: TValue; begin Result := TValue(inherited First); end; function TValueList.GetItem(Index: Integer): TValue; begin Result := TValue(inherited GetItem(Index)); end; function TValueList.IndexOf(AObject: TValue): Integer; begin Result := inherited IndexOf(AObject); end; procedure TValueList.Insert(Index: Integer; AObject: TValue); begin inherited Insert(Index, AObject); end; function TValueList.Last: TValue; begin Result := TValue(inherited Last); end; function TValueList.Remove(AObject: TValue): Integer; begin Result := inherited Remove(AObject); end; procedure TValueList.SetItem(Index: Integer; AObject: TValue); begin inherited SetItem(Index, AObject); end; |
Re: Array of Record - Einzelne Fixe Elemente?
@Real-TTX:
Wenn dir rollstuhlfahrers Klasse zu hoch ist, was sicherlich keine Schande ist (mir gehts auch so *g* ... bin mir z.B. nicht sicher, was er mit dem abstrakten Getter bezweckt), kannst du es dann nicht einfach so machen?
Delphi-Quellcode:
Sieht dann von der Syntax nicht genau wie gewollt aus, aber insgesamt ist es glaube ich doch, was du willst :zwinker: :
TContainer = record
Values: array of TValues; //würde ich in TValue umbenennen, bei Pluralen denke ich an Listen Name: string; //sollte man vielleicht auch noch umbenennen ^^ end
Delphi-Quellcode:
@oki:
container.Name := ...;
container.Values[i].ValueFrom := ...; |
Re: Array of Record - Einzelne Fixe Elemente?
Ich hab mal eher das Gefühl, das das Absract bei Rollstuhlfahrer ein Copy and Waste - Fehler ist. Macht da eigentlich keinen Sinn.
Das mit dem Array sieht auf den ersten Blick immer einfacher aus, will man dann aber einzelne Elemente an beliebiger Position in das Array einfügen oder löschen schreibt man schnell alles neu was die ObjectList mitbringt. Gruß oki |
Re: Array of Record - Einzelne Fixe Elemente?
Danke an alle :) Habt mir sehr geholfen... Ich denke ich mach es über eine Klasse ;)
Gruß, Real-TTX |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 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