一个更小的语法问题(20分)

  • 主题发起人 主题发起人 启明星
  • 开始时间 开始时间

启明星

Unregistered / Unconfirmed
GUEST, unregistred user!
if (username.czy_quanxian=2) and (gzcp.edGzfs.Text='') then

这句话可以编译,但是运行就出错,当我把and改成or以后,又不会出错了,什么问题啊?
 
再贴部分代码出来,还有变量类型
 
是这样的,这是在一个单元里面的一个自定义的过程(procedure),
gzcp就是这个单元的名称,我想是不是在自定义过程当中,有什么特别的地方?
 
问题在于你已经有了一个叫gzcp的过程,另外还有一个叫gzcp的对象,所以编译不出问题,运行时却不知道应该用哪个gzcp了
把gzcp过程改个名字就行了
 
语法没问题,用or不出错大概因为根本没有被执行到。
所以问题出在gzcp.edGzfs.Text='',运行时刻gzcp.edGzfs.Text的访问有问题,
至于原因,要看你这段代码的执行的上下文
 
这个过程在创建Tgzcp这个窗体的时候被调用,
而这个过程也在gzcp.这个窗体相同的pas文件里面,这会不会产生什么问题?
 
问题肯定出在gzcp.edGzfs.Text=''
因为(username.czy_quanxian=2)为 true 所以换成or时根本就不判断后面的假如你把这句
改成(username.czy_quanxian=-1) {结果为 false} 相信换成or也是出错。
问题可能是:
1、你的窗体gzcp还没创建
2、你的edGzfs (应该是一个TEdit对象吧?)没创建
 
我猜想也有可能,这个应该怎么解决?
 
原回即然找到了,你也明白了,我想gzcp不是单元名称,而是这个单元里窗体的名称,Form没有创建,当然要创建啦:
gzcp:=Tgzcp.Create(Application);不过是在什么时候创建那得看你的程序的需要啦!
 
这段程序我应该在
Tgzcp.FormCreate(Sender: TObject)这个事件里面执行,还有什么其它事件可以用吗?
 
我是说比如什么窗体包括控件全部创建好了,马上执行的是什么?
 
这个问题,我把edGzfs.Text=''放入Tgzcp.FormCreate(Sender: TObject)就没问题,
可是只要是自定义过程的,在Tgzcp.FormCreate(Sender: TObject)里面调用,
就会出错,为什么?自定义过程他告诉我必须要指定窗体,也就是gzcp.edgzfs.text
 
我把过程放在onactive就解决了,好奇怪阿
 
能不能贴全代码?
 
看来还要去研究一下
 
后退
顶部