转换成unicode字符串可以解决,如: procedure TForm1.Button1Click(Sender: TObject); var s : WideString; begin s := edit1.Text; showmessage (inttostr(Length(s))); end;
用WideStringprocedure TForm1.Button1Click(Sender: TObject); var a:WideString; begin a:='例如123ABC'; showmessage(inttostr(length(a))); showmessage(Copy(a,1,2)); end;
试试下面这段代码,我用过,没问题
function CharCounts(Text : string): integer; var Len : integer; j,i : integer; begin Result := 0; Len := Length(Text); j := 0; for i := 1 to Len do if ord(Text[i]) > 127 then Inc(j); Len := Len - (j div 2); Result := Len; end;
如果用SQL语句可以adoquery1.sql.text :='select len('+#39+edit1.text+#39+') as strlength'; adoquery1.open; showmessage(adoquery1.fieldbyname('strlength').asstring);
procedure TForm1.Button1Click(Sender: TObject);
var
s : WideString;
begin
s := edit1.Text;
showmessage (inttostr(Length(s)));
end;
var
a:WideString;
begin
a:='例如123ABC';
showmessage(inttostr(length(a)));
showmessage(Copy(a,1,2));
end;
function CharCounts(Text : string): integer;
var
Len : integer;
j,i : integer;
begin
Result := 0;
Len := Length(Text);
j := 0;
for i := 1 to Len do
if ord(Text[i]) > 127 then Inc(j);
Len := Len - (j div 2);
Result := Len;
end;
adoquery1.open;
showmessage(adoquery1.fieldbyname('strlength').asstring);