問題があります。私は次のコードによって変数を正しく再定義することはできません。関数ReturnRightListでTStringList型変数を再定義する方法
UnitObj.prjOne:=ReturnRightList(0);
for j:=0 to UnitObj.prjOne.Count-1 do
str:=UnitObj.prjOne.ValueFromIndex[j];//here i get for example '32'
UnitObj.prjTwo:=ReturnRightList(1);
for j:=0 to UnitObj.prjTwo.Count-1 do
str1:=UnitObj.prjTwo.ValueFromIndex[j];//here i get for example '40'
for j:=0 to UnitObj.prjOne.Count-1 do
str4:=UnitObj.prjOne.ValueFromIndex[j]; // WHY HERE I GET '42' instead of '32'
UnitObj.prjThird:=ReturnRightList(2);
for j:=0 to UnitObj.prjThird.Count-1 do
str2:=UnitObj.prjThird.ValueFromIndex[j];//here i get for example '42'
procedure TfrmLogin.FormCreate(Sender: TObject);
begin
roleList:=TStringList.Create;
end;
function TfrmLogin.ReturnRightList(bPos:integer):TStringList;
var sqlString:string;
begin
roleList.Clear();
case bPos of
0:sqlString0;//some sql queries
1:sqlString1;
2:sqlString2;
end;
SQLQueryPrjRight.Close;
SQLQueryPrjRight.SQL.Strings[5]:=sqlString;
SQLQueryPrjRight.ParamByName('ID').Value:=uInfo.ID;
SQLQueryPrjRight.Open;
while not SQLQueryPrjRight.EOF do
begin
roleList.Add(IntToStr(SQLQueryPrjRight.FieldByName('pID').AsInteger));
SQLQueryPrjRight.Next;
end;
Result:=roleList;
end;
私はprjOne、prjTwo、prjThirdに割り当てられていることをTStringListののRoleListを記入。しかし、その後、私は同じ内容の3つのTStringListsを取得します。なぜそれが起こり、どのように解決するのですか?おかげ
rolelListは、3つのTStringListsの配列でなければなりません。 roleList [0]、roleList [1]、roleList [2]を作成し、その都度適切なTStringListを処理するコードを変更するようにコードを修正します。 – Scooter