我试图做到这一点,所以一旦输入不同的文本形状将改变颜色,但它说('A''Z')是'期望'的问题,但收到一个字符串文字''一个'' '。我不知道如何解决它。任何帮助表示感谢,谢谢!子范围声明的问题
type
TCapitalLetter = ('A' .. 'Z'); //subrange of type char
TDigit = ('0' .. '9'); //subrage of type char
我试图做到这一点,所以一旦输入不同的文本形状将改变颜色,但它说('A''Z')是'期望'的问题,但收到一个字符串文字''一个'' '。我不知道如何解决它。任何帮助表示感谢,谢谢!子范围声明的问题
type
TCapitalLetter = ('A' .. 'Z'); //subrange of type char
TDigit = ('0' .. '9'); //subrage of type char
你的定义是接近的,但它并不完全正确:
type
TCapitalLetter = 'A'..'Z';
TDigit = '0'..9';
从您的其他问题,但是,我不认为这就是你真正需要做的。您正在寻找会员资格(某些字符包含在该类型中),在这种情况下,您需要使用集合来完成。这是一个控制台应用程序你可以编译和测试:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TCapitalLetters = TSysCharSet;
TDigits = TSysCharSet;
const
CapitalLetters: TCapitalLetters = ['A'..'Z'];
Digits: TDigits = ['0'..'9'];
var
Temp, Output: string;
Ch: Char;
begin
Output := '';
Temp := 'Seems A Nice Test Answer';
for Ch in Temp do
if CharInSet(Ch, CapitalLetters) then
Output := Output + Ch;
WriteLn(Output);
ReadLn;
end.
对于德尔福的早期(非Unicode)的版本,你需要使用set of Char
代替TSysCharSet
,并使用一个稍微不同的语法为集合成员:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TCapitalLetters = set of Char;
TDigits = set of Char;
const
CapitalLetters: TCapitalLetters = ['A'..'Z'];
Digits: TDigits = ['0'..'9'];
var
Temp, Output: string;
Ch: Char;
begin
Output := '';
Temp := 'Seems A Nice Test Answer';
for Ch in Temp do
if Ch in CapitalLetters then
Output := Output + Ch;
WriteLn(Output);
ReadLn;
end.
输出测试应用程式:
从字面上看,只需要删除括号...知道这将是一件小事。鉴于你的第二个建议,这是一个好主意,但不是我想要做的密码强度计。谢谢你。随着我现在的代码仍然存在问题,现在形状不会改变颜色,直到任何文本完全退后。明天我会再看看这个。再次感谢! – user3077842
你的“密码强度计”将需要迭代用户输入的文本来查看输入了多少个UPPER,更低和数字,对吗?我在第二个示例中使用的代码将允许您这样做,如果您将测试添加为小写字母和数字,并实现计数器而不是仅收集字母。 –
一套字符不会在Unicode Delphi中编译,不幸的是。无论如何,使用像TCharacter.IsUpper等字符属性测试器更清晰。 –
“它说那里有一个问题” 不是PR的描述这对我们很有用。你从编译器得到了什么**精确**错误信息? (是的,我知道问题是什么以及如何解决问题,但是你需要首先编辑你的问题并改进它。) –
从这个问题你可以告诉我没有经验。我可能错过了一些非常简单的东西,所以我不认为我需要扩展更多。 – user3077842
我想解释如何在这里写出更好的问题,以便您可以更快地获得帮助。编译器错误信息就在你面前;在你的问题中没有包含它的绝对**没有任何借口。如果您希望我们给您**我们的时间**以帮助解决**您的问题**,您至少可以向我们提供您已有的信息,我们可以使用这些信息来做到这一点。 –