是否可以将字符串作为 TSysCharSet 变量传递?
这当然不能编译:
var
AValidChars: SysUtils.TSysCharSet;
AResult: string;
begin
// Edit1.Text can contain 0..9 or a..z
AValidChars := SysUtils.TSysCharSet( [Edit1.Text] );
end;
谢谢, 比尔
最佳答案
不,不可能简单地将字符串作为 TSysCharSet 传递。
但是,您可以做的是创建一个包含字符串中所有字符的 TSysCharSet。此代码将执行以下操作:
var
AValidChars: SysUtils.TSysCharSet;
s: AnsiString;
i: integer;
begin
// Edit1.Text can contain 0..9 or a..z
AValidChars := [];
s := Edit1.Text;
for i := 1 to Length(s) do
Include(AValidChars, s[i]);
end;
如果您没有使用早期的 Delphi 版本,您也可以使用“for ... in”而不是上面的循环:
var
AValidChars: SysUtils.TSysCharSet;
c: AnsiChar;
begin
// Edit1.Text can contain 0..9 or a..z
AValidChars := [];
for c in Edit1.Text do
Include(AValidChars, c);
end;
请注意,在两个代码片段中都使用了 AnsiString/AnsiChar,因为此技术不适用于 WideString 或 Delphi 2009 引入的 Unicode 字符串类型。
非常感谢Craig Stuntz , Ken White和 Rob Kennedy鉴于他们非常宝贵的意见,我编辑了这个答案以解决他们的所有观点。
关于delphi - 如何将字符串变量作为 TSysCharSet 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/561457/