这个应该是26进制数据转换问题。 function xxx(const Value: Integer): String; var iTmp : Integer; begin iTmp := Value div 26; if iTmp > 0 then Result := Char((iTmp) + 64); iTmp := Value mod 26; if iTmp > 0 then Result := Result + xxx(iTmp); end;
上面的答案是错误的,现给正确的 function xxx(const Value: Integer): String; var iTmp : Integer; begin iTmp := Value mod 26; if iTmp > 0 then Result := Char((iTmp) + 64) else if Value > 0 then Result := 'Z'; if (Value/26) > 1 then Result := xxx((value - 1) div 26) + Result; end;
function xxx(const Value: Integer): String;
var
iTmp : Integer;
begin
iTmp := Value div 26;
if iTmp > 0 then
Result := Char((iTmp) + 64);
iTmp := Value mod 26;
if iTmp > 0 then
Result := Result + xxx(iTmp);
end;
function xxx(const Value: Integer): String;
var
iTmp : Integer;
begin
iTmp := Value mod 26;
if iTmp > 0 then
Result := Char((iTmp) + 64)
else if Value > 0 then Result := 'Z';
if (Value/26) > 1 then
Result := xxx((value - 1) div 26) + Result;
end;