0

这是我拥有的字符串变量:

question1 := 'Please enter 1, 2 or 3.';

我还有一个函数应该打印出 question1 变量,但它会在打印之前生成问题编号。这是该函数的一个片段,它将问题编号 ( question : integer) 转换为字符串变量 ( test : string),然后将字符串“问题”与该字符串变量 ( test : string) 连接起来。

str(question,test);
test := concat('question',test);
writeln(test);

这个 writeln 的结果是 'question1'(不带引号)。我希望它将 question1 变量输出为文本字符串,而不仅仅是这个变量的名称,以便Please enter 1, 2 or 3.我尝试过的 writeln 打印writeln(question1)并且它可以工作,但是,我上面的函数(或它的片段)似乎是这样做的:writeln('question1'). 我该如何解决这个问题?

4

2 回答 2

1

Pascal 不支持动态名称解析,如您所愿。您可以考虑改用数组

…
var
  Questions: array[1..3] of string;

…

procedure InitQuestions;
begin
  Questions[1] := 'Please enter 1, 2 or 3.';
  Questions[2] := '…';
  Questions[3] := '…';
end;

procedure YourFunction(question: Integer);
begin
  …
  WriteLn(Questions[question]);
  …
end;

…

begin
  …
  InitQuestions;
  …
  YourFunction(1);
  …
end.
于 2012-05-31T19:40:27.757 回答
0

据我从您的问题中可以看出,您需要以下内容

writeln (question1, 'question ', question);

您不需要连接字符串值,也不需要将问题编号转换为字符串 - writeln 具有接受任意数量变量并根据其默认格式(字符串、整数、实数和布尔值)打印它们的神奇能力)。

实际上,您实际上并不需要创建 'question1' 变量 - 您可以简单地编写

writeln ('Please enter 1, 2 or 3. Question', question);
于 2012-05-31T18:33:51.220 回答