0
這有點令人困惑,但會盡力解釋它。請詢問你是否需要更多細節。刪除,添加,編輯stringList
首先我有一個名爲TPlayers
像這樣的類..
TPlayers = class
Private
p : array[1..20] of TStringList;
function GetPlayer(i:integer): TStringList;
Public
Property player[i : integer] : TStringList read GetPlayer;
constructor Create; virtual;
implementation
uses
main;
{constructor}
constructor TPlayers.Create;
begin
p[1] := TStringList.Create;
p[2] := TStringList.Create;
p[3] := TStringList.Create;
p[4] := TStringList.Create;
p[5] := TStringList.Create;
p[6] := TStringList.Create;
end;
function TPlayers.GetPlayer(i: integer): TStringList;
begin
Result := p[i];
end;
我現在有FTherePlayers := TPlayers.Create
創建類。 我第一次加入到StringList的,像這樣
FTherePlayers.Player[strtoint(name2)].Add('posx='+inttostr(posL.x));
或變量取出
FTherePlayers.Player[1].Add('posx=15');
這似乎是不錯,但是接下來我試着像這樣
FTherePlayers.Player[strtoint(ID)].Values['posx='] := xpos;
進行更新
或帶變量取出
FTherePlayers.Player[1].Values['posx='] := 12;
但後來我改變之後檢查價值,它仍然說15,因此當我做
showmessage(fthereplayers.player[1].Values['posx']);
返回15,但它應該是12.任何想法,爲什麼它不是量變到質變? 謝謝 Glen
你有'FTherePlayers.Player [strtoint(ID)一個錯字值[ 'POSX ='] := xpos;',它應該是'FTherePlayers.Player [strtoint(ID)]。Values ['posx']:= xpos;'而不是。但是公開這些字符串列表並不是一個好主意,而是創建添加方法,比如'TPlayers.AddPlayer'和索引屬性,例如'TPlayers.PlayerPosition [x]',它將訪問內部字符串列表的'Values'。 – TLama
arg,我怎麼沒看見。也謝謝,我都準備好了一個addplayer,但我想到了FTherePlayers.Player [x]只能通過私人獲得玩家和.p [x]訪問,因此可以,但添加一個可以訪問值的玩家位置並不困難做,只是沒有看到這一點..但我仍然是一種新的德爾菲和它的共同構造 –
如果你使用上面的delphi2010然後看看添加Generics.Collections。 TList,TObjectList,TDictionary和TObjectDictionary – Ravaut123