gpt4 book ai didi

delphi - 如何将字符串变量作为 TSysCharSet 传递

转载 作者:行者123 更新时间:2023-12-03 15:49:18 25 4
gpt4 key购买 nike

是否可以将字符串作为 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 WhiteRob Kennedy鉴于他们非常宝贵的意见,我编辑了这个答案以解决他们的所有观点。

关于delphi - 如何将字符串变量作为 TSysCharSet 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/561457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com