0

これは私が持っている文字列変数です:

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

question1 変数を出力する関数もありますが、出力する前に質問番号を生成します。これは、質問番号 ( question : integer) を文字列変数 ( ) に変換し、文字test : string列 'question' をこの文字列変数 ( ) と連結する関数の一部test : stringです。

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

この writeln の結果は 'question1' (引用符なし) です。この変数の名前だけでなく、question1 変数をテキスト文字列として出力して、 writelnPlease enter 1, 2 or 3.が試した結果を出力して動作するようにしたいのです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 に答える