Конкатенация строк в имена переменных - PullRequest
0 голосов
/ 26 марта 2012

Это простой вопрос, но я не знаю, как создать имя переменной путем объединения двух строк. Код ниже, как не сделать это ...

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;  

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

В принципе, вы не можете этого сделать. Имена переменных фиксируются во время компиляции и преобразуются в адреса, которые содержат значение переменных.

Похоже, вам нужен массив, или в этом случае два: один массив будет содержать имена для входа, а другой - пароль. Конечно, вы можете объединить их в запись, а затем получить массив записей.

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;
2 голосов
/ 26 марта 2012

Не пытайтесь сделать это.

Потребуется отражение (или 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;
...