下面的函数能计算双字节字符的个数,不一定是中文,占两个字节的符合都会算进去
function CalcWCount(const AText : string):Integer;
var
v : OleVariant;
begin
v := AText;
Result := Length(AText) - Length(PWideString(@TVarData(v).VOleStr)^);
end;
var
AllText : String;
bHalf : Boolean;
i : Integer;
nAsc : Integer;
begin
AllText := GetText(); // 取得文本
bHalf := false;
for i := 1 to Length(AllText) do
begin
nAsc := ord(AllText); // 取每个字符的ASCII代码
if bHalf then // 如果处于双字节字符的第二个字符,则忽略该字符
begin
bHalf := false;
nAsc := 0;
end;
// 如果当前字节ASCII代码>127,则认为其为双字节字符
if nAsc > 127 then
begin
if not bHalf then
汉字啦!!当然是所有的双字节字符,又是只有汉字那就是啦
bHalf := not bHalf;
end
else if (nAsc >= 48) and (nAsc <= 57) then
// 数字字符
else if (nAsc >= 65) and (nAsc <= 90) then
// 英文字母字符
else if (nAsc >= 97) and (nAsc <= 122) then
// 英文字母字符
else if (nAsc <> 32) and (nAsc <> 0) and
(nAsc <> 13) and (nAsc <> 10) then
// 其他字符