我如何知道变量是否是带Pascal的数字或字母?

时间:2013-09-20 00:57:07

标签: pascal freepascal

我正在尝试制作一个(非常)小代码来确定给定变量x是数字还是字母。必须手工完成,不需要类型(x) - 假设在Pascal中有这样的东西 - 。

我的计划是验证x不是一个一个的数字,然后我写了这个:

(*let ischar be a boolean and let x be a letter or a number.*)
for i:=0 to 9 do
begin
    if (x=i) then
        ischar = false;
end;

if ischar then
    write('x is a number!');
else
    write('x is a letter');

如果x是一个字母,我希望测试“x = i”会返回false,但是由于以下错误,我甚至无法编译:“得到char,期望long int”。似乎我无法比较x和我,我知道但是我认为在那种情况下如果会返回假。 还有另一种方法可以“手工”吗?

1 个答案:

答案 0 :(得分:4)

通常不可能直接比较不同类型的变量。编译错误表明x被声明为char,而ilongint

可用选项可能取决于您使用的Pascal编译器 我唯一的经验是Borland(后来的CodeGear和Embarcadero)产品“Turbo Pascal”和“Delphi”。

这些编译器具有ord函数,该函数给出了序数类型的数值。 对于charord函数应该为您提供字符的ASCII代码,您可以测试它是否在代码范围'0'..'9'中。

您不需要for循环。这应该有效:

if (ord(x)<48) or (ord(x)>57) then ischar:=true else ischar:=false;

编辑:这是ord函数的Free Pascal文档:
http://www.freepascal.org/docs-html/rtl/system/ord.html