这是一个简单的问题,但我不知道如何通过连接两个字符串来构造变量名。下面的代码是如何不做它…
var
UserName1 : String;
UserName2 : String;
Password1 : String;
Password2 : String;
UserCount : Integer;
UserCount := 2;
for Wk1 := 1 to UserCount do
begin
DoLogin(UserName+Wk1, Password+Wk1);
end;
基本上,你不能这样做。变量名在编译时是固定的,并转换为保存变量值的地址。
看起来您需要一个数组,或者在本例中需要两个:一个数组将包含登录名,另一个数组包含密码。当然,您可以将两者组合成一个记录,然后得到一个记录数组。
type
LogType = record
username, password: string[31]
end;
var
LogArray: array [1..10] of logtype;
usercount, wk1: integer;
begin
UserCount := 2;
for Wk1 := 1 to UserCount do
begin
DoLogin(logarray[wk1].username, logarray[wk1].password);
etc
end;
end;
不要尝试这样做。
反射(或RTTI-运行时类型信息)将是必要的,在Delphi中使用它是不好的,因为它可以从一个版本更改到另一个版本,我认为在构建时需要包括调试信息。
所以使用一两个数组。
var
UserNames[1..2] : String;
Passwords[1..2] : String;
UserCount : Integer;
UserCount := 2;
for Wk1 := 1 to UserCount do
begin
DoLogin(UserNames[Wk1], Passwords[Wk1]);
end;