正如其他人所說,你不能創建你想要的變量名稱。您可以使用數組來代替,例如:
var
variavel: array[1..10] of string;
i: Integer;
for i := 1 to 10 do
variavel[i] := TEdit(FindComponent('edt_variavel'+IntToStr(i))).Text;
FindComponent()
有一定的開銷,所以你應該考慮把你的TEdit
對象數組爲好,在創建表時,例如,那麼你不在需要的時候去尋找他們:
private
edt_variavel: array[1..10] of TEdit;
procedure TMyForm.FormCreate(Sender: TObject)
var
i: Integer;
begin
for i := 1 to 10 do
edt_variavel[i] := TEdit(FindComponent('edt_variavel'+IntToStr(i)));
{ or simply:
edt_variavel[1] := edt_variavel1;
...
edt_variavel[10] := edt_variavel10;
}
end;
var
variavel: array[1..10] of string;
i: Integer;
begin
...
for i := 1 to 10 do
variavel[i] := edt_variavel[i].Text;
...
end;
或者,如果你真的想要動態命名變量,你可以使用0123改爲(儘管它的開銷比陣列多):
var
variavel: TDictionary<String, String>;
i: Integer;
s: string;
begin
...
variavel := TDictionary<String, String>.Create;
for i := 1 to 10 do
variavel.Add('edt_variavel'+IntToStr(i), edt_variavel[i].Text);
...
variavel['edt_variavel'+IntToStr(SomeNumber)] := '...';
...
value := variavel['edt_variavel'+IntToStr(SomeNumber)];
...
variavel.Free;
end;
不要使用10個不同的變量。使用數組。 –
這是一個想法... –
@GuilhermeLima它不是一個想法,它是唯一正確的解決方案 –