使用字母A到(用户选择的值)填充数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用字母A到(用户选择的值)填充数组相关的知识,希望对你有一定的参考价值。

我有一个for循环从1到10以下的随机数。循环用字母填充一个数组所以说随机数是6:数组将是A,B,C,D,E,F除了我避风港每次循环运行时都找不到增加字符值的方法。

代码到目前为止:

Random := RandomRange(2, 10);
  for I := 1 to Random do
  begin
    Piles[I] := 'A' + I - 1;   {Piles is an array of undefined size}
    Writeln (Piles[i]);
  end;
答案

你不能只是添加到Char。你必须做的事情如下:

var
  Piles: string;
  C: Char;
  I: Integer;
  Count: Integer;
begin

  // ...

  Piles := '';
  Count := RandomRange(2, 10);
  for I := 1 to Count do
  begin
    C := Chr(Ord('A') + I - 1); 
    Piles := Piles + C;
    Writeln(C);
  end;
  Writeln;
  Writeln(Piles);

  // etc...

Ord()返回Integer(在这种情况下具有Char的序数值)。你可以添加到Integer。然后你用Char把它变回Chr()

另一答案

实际上你可以使用Char“加”到Inc()(并用Dec()减去);

c := 'A'; //c is a char variable
Random := RandomRange(2, 10);
for i := 1 to Random do
begin
  Piles[i] := c;
  Inc(c);
  Writeln(Piles[i]);
end;

你也可以循环使用Char变量

Random := RandomRange(2, 10);
for c := 'A' to Chr(Ord('A') + Random) do
begin
  Piles[i] := c;
  ShowMessage(Piles[i]);
end;

最后你也可以使用Succ()Pred()这样的另一个解决方案(假设Piles是一个Char数组)可以

Random := RandomRange(2, 10);
for i := 1 to Random do
begin
  if i = 1
    then Piles[i] := 'A'
    else Piles[i] := Succ(Piles[i-1]);
  ShowMessage(Piles[i]);
end;

编辑:

我经常忘记Inc()Dec()有第二个参数:

var
  c: char;
begin
  c := 'A';
  Inc(c, 3);
  ShowMessage(c); //Shows D
end;

通过这种方式,您可以有效地添加/减去Char所需的内容

以上是关于使用字母A到(用户选择的值)填充数组的主要内容,如果未能解决你的问题,请参考以下文章

在哪里以及如何使用片段填充我的标签

根据表单选择值查找数组的值

使用可变数组中的值填充选择器视图

JavaScript 代码片段

为啥此代码片段返回意外结果?

如何获取选择选项的值,并使用它来查询数组,以填充另一个输入