我试图这样做,所以一旦输入不同的文字,形状会改变颜色,但它表示('A ..'Z')是'预期'的问题但是收到字符串文字''A''' 。我不知道如何解决它。感谢任何帮助,谢谢!
type
TCapitalLetter = ('A' .. 'Z' ); //subrange of type char
TDigit = ('0' .. '9' ); //subrage of type char
答案 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)版本的Delphi,您需要使用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.
测试应用程序的输出: