我正在尝试将旋转编辑中的数字转换为字母表中的字母。以下是我到目前为止的情况:
procedure TForm2.btnRepeatClick(Sender: TObject);
var
iNumLetters, iCounter, i: Integer;
begin
iNumLetters := sedNum.Value;
iCounter := 0;
repeat
redOut.Lines.Add(Chr(iCounter));
Inc(iCounter);
until (iCounter = iNumLetters);
end;
现在我收到错误
丰富的编辑行插入错误
答案 0 :(得分:1)
[2]
使用主流字符编码将整数值转换为具有该序数值的字符。那不是你想要的。字母Chr
未使用序数值0进行编码。
您希望将0转换为A,将1转换为B,依此类推。而不是A
你想要Chr(iCounter)
。请注意,这依赖于以与字母表相同的顺序编码为序数值的字母。
答案 1 :(得分:1)
假设sedNum.Value
不超过26,你可以这样做:
procedure TForm2.btnRepeatClick(Sender: TObject);
var
iNumLetters, iCounter: Integer;
begin
iNumLetters := sedNum.Value;
for iCounter := 0 to iNumLetters-1 do
redOut.Lines.Add(Char(Ord('A') + iCounter));
end;
答案 2 :(得分:0)
那怎么样?
function TForm2.numberToString(number: Integer): String;
begin
Result := '';
if (number < 1) or (number > 26) then
Exit;
Result := 'abcdefghijklmnopqrstuvwxyz'[number];
end;