Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Property für Element eines Arrays (https://www.delphipraxis.net/133535-property-fuer-element-eines-arrays.html)

HeikoAdams 4. Mai 2009 09:31


Property für Element eines Arrays
 
Hallo,
ist es möglich, eine Property zu definieren, die auf ein bestimmtes Elemen eines Arrays zeigt?

Beispiel:
Delphi-Quellcode:
type
  TMyThread = class(TThread)
  private
    FListen: array of TStringList;
  public
    destructor Destroy; override;

    property Liste1: TStringList: read FListen[1] write FListen[1];
  protected  
    constructor Create();
  end;

Meflin 4. Mai 2009 09:34

Re: Property für Element eines Arrays
 
naja gehn wirds schon, aber wozu soll das gut sein?
Delphi-Quellcode:
private
  function GetElement: string;
public
  property MyStrings: TStringList read GetElement;

...

function MyClass.GetElement: string;
begin
  result := FMyStrings[1];
end;

himitsu 4. Mai 2009 09:54

Re: Property für Element eines Arrays
 
also gehen würde das auch so
Delphi-Quellcode:
property Liste[Index: Integer]: TStringList read GetListe;


function MyClass.GetListe(Index: Integer): TStringList;
begin
  result := FListen[Index];
end;
PS: READ reicht vollkommen, da nur die Objektinstanz zurückgegeben werden muß ... Änderungen kann man in der Liste selber ja vornehmen

und wenn unbedingt mit Setter, dann besser so,
denn sonst hast du ein süßes Speicherleck, da die schon enthaltene Listen-Variable einfach überschrieben, aber die enthaltene Instanz nicht freigegeben wird :angel:
Delphi-Quellcode:
property Liste[Index: Integer]: TStringList read GetListe write SetListe;


function MyClass.GetListe(Index: Integer): TStringList;
begin
  result := FListen[Index];
end;

Procedure MyClass.SetListe(Index: Integer; Liste: TStringList);
begin
  FListen[Index].Assign(Liste);
end;

HeikoAdams 4. Mai 2009 10:21

Re: Property für Element eines Arrays
 
Zitat:

Zitat von Meflin
naja gehn wirds schon, aber wozu soll das gut sein?

Ganz einfach: Die Nachfahren von TMyThread arbeiten alle mit mehreren TStringLists und ich möchte die Verwaltung der Listen im Ahnen steuern, um mir Arbeit in den Erben zu ersparen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 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