ReverseString和AnsiReverseString的区别?(10分)

  • 主题发起人 主题发起人 TENTODBV
  • 开始时间 开始时间
T

TENTODBV

Unregistered / Unconfirmed
GUEST, unregistred user!
function ReverseString(const AText: string): string;
var
I: Integer;
P: PChar;
begin
SetLength(Result, Length(AText));
P := PChar(Result);
for I := Length(AText) downto 1 do
begin
P^ := AText;
Inc(P);
end;
end;

function AnsiReverseString(const AText: AnsiString): AnsiString;
var
I: Integer;
Len, CharByteLen: Integer;
L, R, RR, Tail: PAnsiChar;
begin
Len := Length(AText);
SetLength(Result, Len);
if AText = '' then exit;
L := PAnsiChar(AText);
Tail := L+Len;
R := PAnsiChar(Result)+Len;

while L < Tail do
begin
CharByteLen := 1;
if L^ in LeadBytes then
CharByteLen := StrCharLength(L);
RR := R - CharByteLen;
R := RR;
for I := 0 to CharByteLen - 1 do
begin
RR^ := L^;
Inc(L);
Inc(RR);
end;
end;
end;
 
ReverseString是按字节进行到序的,没有考虑到双字节的问题,如汉字,
而AnsiReverseString就可以到序保含汉字的字符串。
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
658
import
I
I
回复
0
查看
640
import
I
I
回复
0
查看
432
import
I
I
回复
0
查看
780
import
I
后退
顶部