2013-12-08 26 views
1

我试图做到这一点,所以一旦输入不同的文本形状将改变颜色,但它说('A''Z')是'期望'的问题,但收到一个字符串文字''一个'' '。我不知道如何解决它。任何帮助表示感谢,谢谢!子范围声明的问题

type 
    TCapitalLetter = ('A' .. 'Z'); //subrange of type char 
    TDigit = ('0' .. '9'); //subrage of type char 
+0

“它说那里有一个问题” 不是PR的描述这对我们很有用。你从编译器得到了什么**精确**错误信息? (是的,我知道问题是什么以及如何解决问题,但是你需要首先编辑你的问题并改进它。) –

+0

从这个问题你可以告诉我没有经验。我可能错过了一些非常简单的东西,所以我不认为我需要扩展更多。 – user3077842

+0

我想解释如何在这里写出更好的问题,以便您可以更快地获得帮助。编译器错误信息就在你面前;在你的问题中没有包含它的绝对**没有任何借口。如果您希望我们给您**我们的时间**以帮助解决**您的问题**,您至少可以向我们提供您已有的信息,我们可以使用这些信息来做到这一点。 –

回答

2

你的定义是接近的,但它并不完全正确:

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. 

输出测试应用程式:

Screen capture of test app output

+0

从字面上看,只需要删除括号...知道这将是一件小事。鉴于你的第二个建议,这是一个好主意,但不是我想要做的密码强度计。谢谢你。随着我现在的代码仍然存在问题,现在形状不会改变颜色,直到任何文本完全退后。明天我会再看看这个。再次感谢! – user3077842

+0

你的“密码强度计”将需要迭代用户输入的文本来查看输入了多少个UPPER,更低和数字,对吗?我在第二个示例中使用的代码将允许您这样做,如果您将测试添加为小写字母和数字,并实现计数器而不是仅收集字母。 –

+0

一套字符不会在Unicode Delphi中编译,不幸的是。无论如何,使用像TCharacter.IsUpper等字符属性测试器更清晰。 –