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

时间:2018-04-21 13:07:06

标签: arrays loops delphi

我所拥有的是一个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;

2 个答案:

答案 0 :(得分:3)

实际上你可以"添加"使用CharInc()(并使用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

添加/减去您想要的内容

答案 1 :(得分:2)

您不能只添加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()