Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objektlisten (https://www.delphipraxis.net/31584-objektlisten.html)

Igotcha 11. Okt 2004 13:50


Objektlisten
 
Hallo zusammen,

ich versuche mich gerade an folgender Konstruktion:

Ich erstelle Objekte einer Klasse (NPC) und möchte in einer weiteren Klasse (WORLD) Personen zu der Welt hinzufügen. Das Hinzufügen von NPC-Objekten zur Welt funktioniert anscheinend.

Jetzt habe ich das Problem, dass ich auch über das Objekt Welt auf die Eigenschaften einer Person zugreifen möchte.

Im Moment habe ich folgendes Minigerüst:

Delphi-Quellcode:
unit WORLD;

interface

uses Contnrs, NPC;

type
  TWORLD = class
    private
      FName:     string;
      FNPCS:     TObjectList;
      procedure SetName(Name: String);
    public
      property Name:     string read FName write SetName;
      property NPCS:     TObjectList read FNPCS;
      procedure Add(aNPC: TNPC);
      function NPCCount: Integer;

      constructor Create(Name: String);
  end;


implementation

{ TWORLD }

procedure TWORLD.Add(aNPC: TNPC);
begin
    FNPCS.Add(aNPC);
end;

constructor TWORLD.Create(Name: String);
begin
    FName:=Name;
    FNPCS:=TObjectList.Create;
end;

function TWORLD.NPCCount: Integer;
begin
    Result:=FNPCS.Count;
end;

procedure TWORLD.SetName(Name: String);
begin
    FName:=Name;
end;

end.
Ich möchte nun ermöglichen, dass ich in meinem Programm über die Welt auf Personen-Eigenschaften zugreifen kann, wie z.B.:
Delphi-Quellcode:
strName:=myWorld.NPCS[0].Name;
wobei NPC auch eine Property "Name" hat.

Gruß Igotcha

Bernhard Geyer 11. Okt 2004 13:57

Re: Objektlisten
 
Sollte mit folgenden Änderungen gehen:
Delphi-Quellcode:
  ...
  property NPCS[Index: Integer]:     TNPC read GetNPCS;
...
function GetNPCS(Index: Integer): TNPC;
begin
  result := FNPCS[Index] as TNPC
end;

Igotcha 11. Okt 2004 14:28

Re: Objektlisten
 
Funktioniert wunderbar, danke!


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