网上看了一下,好象没有现成的,自己随手写了一下,给大家参考一下吧
// a..z 97..122 A..Z 65..90
function UpABC(ABC : String; AddCount : Integer) : String;
var
i, c, x : Integer;
Ask : Boolean;
begin
if Length(ABC) > then
begin
x := AddCount mod ; if Ord(ABC[]) > then // 判断大小写
begin
Ask := True;
Result := ABC;
end
else
begin
Ask := False;
Result := LowerCase(ABC);
end; for i := Length(ABC) downto do
begin
c := Ord(Result[i]); if i = Length(Result) then
c := c + x
else
Inc(c);
if c > then // 超出 z 界
begin
c := c - ; // 本位回到 a .. z
Result[i] := Char(c);
if i = then
Result := Char(c) + Result; // 第一位加 a A
end
else
begin
Result[i] := Char(c);
Break; // 跳出循环
end;
end; if not Ask then
Result := UpperCase(Result);
end
else
Result := '';
end; function DownABC(ABC : String; SubCount : Integer) : String;
var
i, c, x : Integer;
Ask : Boolean;
begin
if Length(ABC) > then
begin
x := SubCount mod ; if Ord(ABC[]) > then // 判断大小写
begin
Ask := True;
Result := ABC;
end
else
begin
Ask := False;
Result := LowerCase(ABC);
end; for i := Length(Result) downto do
begin
c := Ord(Result[i]);
if i = Length(Result) then
c := c - x
else
Dec(c);
if c < then
begin
if Length(Result) = then // 长度为 1
begin
Result := 'a';
Break;
end;
c := c + ; // 本位回到 z or Z
Result[i] := Char(c);
if i = then
Result := Copy(Result, , Length(Result) - );
end
else
begin
Result[i] := Char(c);
Break; // 跳出循环
end;
end; if not Ask then
Result := UpperCase(Result);
end
else
Result := '';
end;