function Trim_emo(SL: TStringList): TStringList;
var
I:Integer;
S:string;
begin
Result := TStringList.Create;
if (SL.Text='') then
begin
Exit;
end;
try
Result.Clear;
for I := 0 to SL.Count-1 do
begin
S := SL[I];
S := Trim(S);
if (S<>'') then
Result.Add(ANSIUpperCase(S));
end;
except
on E : exception do
ShowMessage(E.Message);
end;
end;
当StringList包含UTF-8字符时,此函数是否正常工作?
答案 0 :(得分:3)
您的代码永远不会处理UTF-8字符,因为它永远不会遇到它们。 Delphi字符串是UTF-16编码的。如果您想知道代码如何与Unicode输入一起使用,那么就没有问题了。 UTF-16是完整的Unicode编码。
您的代码存在一些问题:
Text
只是为了检查输入是否为空是浪费的。如果输入不为空,您可以创建一个非常长的字符串,然后立即丢弃。这个测试根本不用,可以删除。 这会更好:
function Trim_emo(SL: TStringList): TStringList;
var
I: Integer;
S: string;
begin
Result := TStringList.Create;
try
for I := 0 to SL.Count-1 do
begin
S := Trim(ANSIUpperCase(SL[I]));
if S<>'' then
Result.Add(S);
end;
except
Result.Free;
raise;
end;
end;