0

私は初心者の Delphi ユーザーです。この while ループがあり、1 人のプレイヤー (player1) だけではなく、多くのプレイヤーを Player[i] として記述したいと考えています。[I] を追加できるクラスを編集しました

   while i < FMyPlayers.TeamCount do
    begin
       buttonSelected := MessageDlg('Placeing Unit: '+FMyPlayers.Player[i].Values['name']+'.',mtError, mbOKCancel, 0);
          if buttonSelected = mrCancel then exit;
       imageyouwant.LoadFromFile(thisdir+'\char\'+FMyPlayers.Player[i].Values['picon']);
       Hexmap1.ImageAHex(ImageYouWant , bsSolid, position);
       FMyPlayers.Player[i].Add('pos='+inttostr(position.x)+inttostr(position.Y));
       FMyPlayers.PlaceUnit := false;
    end;

しかし、今私のクラスではエラーが発生します

      property Player: array[1..20] of TStringList read P;

私のMYPlayerクラスは次のとおりです

TPlayers = class
Private
  p : array[1..20] of TStringList;
  FPlaceUnit: Boolean;
  FTeamCount: Integer;
Public
  property Player: array[1..20] of TStringList read P;
  property PlaceUnit : Boolean read FPlaceUnit write FPlaceUnit;
  procedure AddPlayer (PlayerNo : integer; player : String);
  property TeamCount : Integer read FTeamCount write FTeamCount;

 constructor Create;   virtual;
End;
4

1 に答える 1

1

本当の答えではありませんが、ウォーレン P が提案したことを拡張します。クラスが最初から正しく設計されていないようです。

uses Generics.Collections;


TPlayer = class
 // add player related properties & routines here
end;

TGame = class
 protected  
   // all fields go here
   FPlayers : TObjectList<TPlayer>;

 public

   function AddPlayer(settings : TStringList) : TPlayer; 

   property Player[index:Integer]:TPlayer read GetPlayer;
end;
于 2012-05-26T11:38:10.907 に答える