1

我刚刚开始学习 BASIC 并使用 Stackoverflow。这是我在 FBID 中的代码。错误消息是:

42 变量未声明:var1 in 'input "Enter Function Number" ;var1 /
-
32 预期的 'END IF' 在 'end sub' 中找到 'end'/
-
'end sub' 中应有 32 个 'END IF'
-

代码:

declare sub premain
declare sub main
dim var1 as integer
premain
sub premain
  print "EMC ALPHA v1.0"
  main
end sub 

sub main
   print "Functions:"
   print "1.Add"
   print "2.Subtract"
   print "3.Multiply"
   print "4.Divide"

   input "Enter Function Number" ;var1
   if var1=1 then
      print "HElo"
end sub 
4

1 回答 1

2

在您的程序中,变量var1在主程序范围内声明。除非您使用SHARED关键字,否则在子程序(过程: SUBFUNCTION )中将无法访问此变量。然后该变量将在您的程序中全局可用。

更好的方法是使用局部变量:

declare sub premain
declare sub main

premain
sleep: end


sub premain
  print "EMC ALPHA v1.0"
  main
end sub 

sub main
   print "Functions:"
   print "1.Add"
   print "2.Subtract"
   print "3.Multiply"
   print "4.Divide"
   '****vv HAVE A LOOK HERE vv****
   dim var1 as integer
   input "Enter Function Number" ;var1
   if var1=1 then
      print "HElo"
   end if   '<== this was missing, too.  ***** ("Expected END IF")
end sub 

全局变量(由 SHARED 创建)应该很少使用,例如用于程序范围的配置/设置,例如用户在多语言应用程序中选择的语言。

此外,您的程序缺少一个END IF(在我的帖子上面的代码片段中修复)。

于 2013-08-22T20:17:27.017 回答