| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4152 人关注过本帖
标题:变量找不到,文件.prg不存在?
只看楼主 加入收藏
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:1 
嘿 这些问题要多踫到几回 概念就牢固了
2011-08-02 20:02
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 10楼 TonyDeng
它是这样的:程序代码里有一个主程序文件init.prg和程序文件abc.prg
init里面在#INCLUDE "global.h"之后,有几句代码

= PROGRAM_INIT()
IF GC_ERROR= INIT_0
   DO FORM MAIN
ENDIF

我不理解那个“=”是怎么回事?还有那个IF..

然后在abc.prg
proc Program_init
Do define_public
Do init_public
...
endproc

proc define_public

public X2
public GC
...
endproc

proc init_public

GC=''
endproc

所以应该是变量太多了,都写一起了吧。
2011-08-02 20:59
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 11楼 寻H不得
说的既是。
2011-08-02 21:00
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:8 
在Init.PRG中,它这样写

= PROGRAM_INIT()            && 调用abc.PRG中的PROGRAM_INIT()函数,故在本行之前必须先有SET PROCEDURE TO abc,否则找不到PROGRAM_INIT()函数
 IF GC_ERROR= INIT_0        && GC_ERROR应是在DEFINE_PUBLIC()过程中声明的全局变量,INIT_0是在global.h中定义的常数
    DO FORM MAIN            && 启动主表单
 ENDIF

在abc.PRG中

PROCEDURE PROGRAM_INIT()     && 自定义函数,其动作是执行下面两个过程,一个声明全局变量,一个初始化全局变量的值,所以它在Init.PRG启动处执行
PROCEDURE DEFINE_PUBLIC()    && 这是一个自定义过程,它的作用是声明各种全局变量,其中有X2,GC,回头看上面,这个过程在DO MAIN之前执行
PROCEDURE INIT_PUBLIC()      && 也是一个自定义过程,其作用是将全局变量GC赋值为空字符串

-----------------------
结论:此人写程序有点啰嗦,似乎还不太熟练,很多多余的动作。不过逻辑上没有问题。程序的入口,必须要是从init.prg开始。

授人以渔,不授人以鱼。
2011-08-02 21:13
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 14楼 TonyDeng
你的解释很清晰啊!那不啰嗦的写法应该是怎样呢?
不过运行的时候不知道为什么还是找不到X2和GC..
2011-08-02 21:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你是不是改动过MAIN表单中的代码,写了CLEAR ALL之类的语句?

授人以渔,不授人以鱼。
2011-08-02 21:32
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 16楼 TonyDeng
木有
2011-08-02 21:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
把报告说GC找不到那一行的代码前后10行给我看看

授人以渔,不授人以鱼。
2011-08-02 21:44
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 18楼 TonyDeng
指向的是main的init事件里面的第一句
THISFORM.TITLE.VALUE = "A "+GC+" Program"
下面就是
        DO XXX WITH THISFORM
        DO...
        RETURN
2011-08-02 21:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
main表单中有个叫title的控件是吧,那个控件的init事件有什么动作?如果这个事件没有动作,就查表单的Load事件中写了什么?
你铁定有个地方把全局变量从内存中清除了,自己不知道而已。

授人以渔,不授人以鱼。
2011-08-02 21:59
快速回复:变量找不到,文件.prg不存在?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025540 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved