新手求教delphi问题,急急急!在线等,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/14 16:28:45
//检测非ascii码字符
function CheckAscii(s:string):TStrings;
var
i:integer;
strtemp:string;
begin
Result := TStringList.Create;
i := 0;
while i < length(s) do
begin
strtemp :=s[i];
if ord(s[i])>127 then
Result.Add(' 包含非ascii码字符 '+s[i]);
i:=i+1;
end;
end;
end.
这是一段检测非asc码的程序,能检测出来但检测出来结果(' 包含非ascii码字符 '+s[i])显示为乱码,求教怎么原文显示。急,在线等,谢谢指导!
var
S: string;
S1: Tstrings;
i: integer;
begin
s:='123456!。。。';
S1:=CheckAscii(S);
for i:=0 to s1.Count-1 do
memo1.Lines.Add(s1.Strings[i]);
end;
你这个不是delphi语言吧

因为非ascii码字符包含两个字节,而Result.Add(' 包含非ascii码字符 '+s[i]); 中的s[i]只是这个非ascii码字符的一半,而你又要它显示,那么就是乱码了,如果你要它显示原文,最好不要把它分开。
你可以这样修改一下函数:
function CheckAscii(s:string):String;//该位字符串
var
i:integer;
strtemp:string;
begin

i := 0;
Result:='包含非ascii码字符';
while i < length(s) do
begin
strtemp :=s[i];

if ord(s[i])>127 then
Result:=Result+(s[i]);
i:=i+1;
end;
end;

var
S: string;
S1: Tstrings;
i: integer;
begin
s:='123456!。。。';
S1:=CheckAscii(S);
for i:=0 to s1.Count-1 do
memo1.Lines.Add(s1.Strings[i]);
end;
试了,没乱码。

ygh_216 的需要修改一下
把while i < length(s) do 改为
while i <= length(s) do

我也遇到过,希望早点解决