我所拥有的是一个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;
答案 0 :(得分:3)
实际上你可以"添加"使用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
答案 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()
。