AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Array of Record - Einzelne Fixe Elemente?

Array of Record - Einzelne Fixe Elemente?

Ein Thema von Real-TTX · begonnen am 22. Mai 2008 · letzter Beitrag vom 23. Mai 2008
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#11

Re: Array of Record - Einzelne Fixe Elemente?

  Alt 22. Mai 2008, 21:59
Delphi-Quellcode:
  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;
ungefähr so
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Array of Record - Einzelne Fixe Elemente?

  Alt 22. Mai 2008, 22:19
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:
TValue = class(TObject)
    ValueFrom : string;
    ValueFromType : string;
    ValueTo : string;
    ValueToType : string;
    ValueSectionA : string;
    ValueSectionB : string;
    ValueSectionC : string;
    ValueSectionD : string;
  end;
Das kannst du dann noch mit diversen Propertys, Getter- und Settermethoden ausschmücken.

Dann verwendest du eine ObjectListe wie folgt:
Delphi-Quellcode:
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;
Gruß oki
42
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#13

Re: Array of Record - Einzelne Fixe Elemente?

  Alt 22. Mai 2008, 22:41
@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:
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
Sieht dann von der Syntax nicht genau wie gewollt aus, aber insgesamt ist es glaube ich doch, was du willst :
Delphi-Quellcode:
container.Name := ...;
container.Values[i].ValueFrom := ...;
@oki:
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Array of Record - Einzelne Fixe Elemente?

  Alt 22. Mai 2008, 23:05
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
42
  Mit Zitat antworten Zitat
Real-TTX

Registriert seit: 7. Mai 2008
Ort: Stuttgart / Wertheim
136 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: Array of Record - Einzelne Fixe Elemente?

  Alt 23. Mai 2008, 17:04
Danke an alle Habt mir sehr geholfen... Ich denke ich mach es über eine Klasse

Gruß, Real-TTX
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:54 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