聲明
type
Alpha = set of 'A'..'Z';
簡單地說,Alpha
是允許包含字母的零個或多個A
和Z
包容性之間的類型。這並不意味着該類型的變量會自動包含該集合的每個元素;它只是表示該變量將由該範圍內的一組字符組成。
var
mn: Alpha; // Uninitialized variable that can contain
// characters between 'A'..'Z'.
begin
mn := ['A'..'Z']; // Valid set of every member
mn := ['A', 'C', 'X']; // Valid set of three members
編譯器正確地告訴你,你有沒有分配任何價值mn
,因此,您使用的是未初始化的變量。
順便說一句,大多數帕斯卡方言的標準約定是用T
來表示類型,以便清楚它是一種類型。所以,考慮到這一點,以下是您所發佈的包含該更正的代碼的工作版本。
program Project1;
uses
crt;
type
TAlpha=set of 'A'..'Z';
var
mn: TAlpha;
begin
clrscr;
mn := ['A'..'Z'];
if ('A' in mn) then
Writeln('A is in mn');
{
My preference to the if statement above - prints true or false
depending on whether the character is in the set, so you get output
either way.
}
WriteLn('A in mn: ', ('A' in mn));
Readln;
end.
爲了解決您的附加問題(從下面的評論):
要檢查字符串是否所有字符是數字(「0」 ..「9」),你可以這樣做這:
function IsNumeric(const str: string): Boolean;
var
i: Integer;
begin
Result := True;
for i := 1 to Length(str) do
if not (str[i] in ['0'..'9']) then
Result := False;
end;
錯誤消息意味着它說。直到你把任務交給'mn',你不應該認爲它有任何特殊的價值。 – MartynA