如何将多个值组合成一个字符串?

时间:2013-12-01 18:45:35

标签: delphi listbox

我正在努力学习德尔福,而我正在制作游戏。我曾经知道一点Pascal,但我对Delphi一无所知。几年前我在Pascal制作了这款游戏。它包含这样一行:

writeln(turn,'  ',input,'   ',die[turn],'  ',wou[turn]);

基本上它意味着显示用户输入的计算结果,这些数字之间有一些空格(所有这些变量都是除“输入”之外的数字,这是一个字符串)。

我试图在Delphi中以类似方式显示结果。虽然最好使用表格,但我不知道如何使用表格,所以我尝试使用列表框。但是items.add程序不像Pascal的writeln那样工作,因此我现在卡住了。

我是一名新的初学者,所以请让我容易理解。

2 个答案:

答案 0 :(得分:7)

使用SysUtils单元中的Format功能。它返回一个字符串,您可以在任何可以使用字符串的地方使用它:

// Given these values for turn, input, die[turn], and wou[turn]
turn := 1;
input := 'Whatever';
die[turn] := 0;
wou[turn] := 3;

procedure TForm1.UpdatePlayerInfo;
var
  PlayerInfo: string;
begin
  PlayerInfo := Format('%d %s %d %d', [turn, input, die[turn], wou[turn]]);

  // PlayerInfo now contains '1 Whatever 0 3'

  ListBox1.Items.Add(PlayerInfo);  // Display in a listbox
  Self.Caption := PlayerInfo;      // Show it in form's title bar
  ShowMessage(PlayerInfo);         // Display in a pop-up window
end;

当然,您可以在没有中间字符串变量的情况下直接转到ListBox

  ListBox1.Items.Add(Format('%d %s %d %d', [turn, input, die[turn], wou[turn]]));

%d调用的第一部分中的%sFormat格式字符串,其中%d表示整数的占位符, %s表示字符串的占位符。该文档讨论了格式字符串here

答案 1 :(得分:1)

另一种可能性是String Concatenation(添加多个字符串以形成单个新字符串):

// Given these values for turn, input, die[turn], and wou[turn]
turn := 1;
input := 'Whatever';
die[turn] := 0;
wou[turn] := 3;

ListBox1.Items.Add(IntToStr(turn)+' '+input+' '+IntToStr(die[turn])+' '+IntToStr(wou[turn]));

即。将各种元素加在一起:

IntToStr(turn) // The Integer variable "turn" converted to a string
+' ' // followed by a single space
+input // followed by the content of the string variable "input"
+' ' // followed by a single space
+IntToStr(die[turn]) // element no. "turn" of the integer array "die" converted to a string
+' ' // followed by a single space
+IntToStr(wou[turn]) // element no. "turn" of the integer array "wou" converted to a string

形成一个连续的字符串值,并将该值传递给ListBox的Items属性的“Add”方法。