在Delphi中将数字转换为字母的字母

时间:2018-01-28 17:18:30

标签: delphi

我正在尝试将旋转编辑中的数字转换为字母表中的字母。以下是我到目前为止的情况:

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;

现在我收到错误

  

丰富的编辑行插入错误

3 个答案:

答案 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;