Einzelnen Beitrag anzeigen

Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Über dynamischen Namen auf eine Instanz zugreifen

  Alt 19. Apr 2004, 22:18
Du brauchst eine objektklasse, die eine Name property hat:

Delphi-Quellcode:
type
  TNamedObject = class(TObject);
  private
    FName:string;
  public
    constructor Creat(const aName:string);
    Class function FindInstance(const aName:string):TNamedObject;
    property Name:String read FString write FString;
  end;
   
implementation

uses contnr;

var
  ObjectList: TObjectList;


constructor TName.Creat(const aName:string);
begin
  FName := aName;
  ObjectList.add(self); // selbst verwaltung
end;

Class function FindInstance(const aName:string):TNamedObject;
var i:Integer;
begin
  result := nil;
  for i:= 0 to ObjectList.count-1 do
    if sameText(TNamedObject(ObjectList[i]).FName, aName) then
    begin
      result := TNamedObject(ObjectList[i]);
      exit;
    end;
end;

initialization
  ObjectList:= TObjectList.create; // liste erzeugen
  ObjectList.ownsObjects := true;

finalization
  ObjectList.free; // alle objekte wieder freigeben
end.
Damit hättest du das alles schön in eine klasse gekapselt! Und so arbeitest du damit:

Delphi-Quellcode:
// Neues object erzeugen und der liste anfügen
TNamedObject.create('Peter');

// suchen und finden
objX := TNamedObject.findInstance('Peter');
if objX <> nil then ObjX.doSameMethod; // gefunden
..Habs aus dem kopf geschrieben, desshalb können fehler drinne sein...das prinzip sollte aber deutlich werden
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat