为什么我的全局变量值会消失

lawrendc 2011-06-29 04:44:35
我在程序开始的Main.Prg里定义了几个全局变量,这些变量在另外一个Form的按钮事件对其进行初始化,但当我在其他Form处理事件里找寻这些全局变量的时候,发现这些变量已经不存在了,为什么?
...全文
656 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2011-07-01
  • 打赏
  • 举报
回复
没看出来 Computer_Lend 表单有什么问题。

发现你挺爱用 过程 的,到处都是 do ... 而且代码量不小,光这么看,这么查,目前没找到原因。

你最好将能运行的源程序上传,并说明一下,先运行什么,再运行什么,其中点了什么按钮或控件,到哪步出现问题等。
lawrendc 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 apple_8180 的回复:]

晕,你在等我们回复,我在等你按照19楼和21楼回复进行修改及测试呢。

你上传的例子缺少主表单 表单1.SCX 和 表单1.SCT
不用再传了,你将你定义这些变量的 Public 语句,改写到你第一个运行的程序(PRG)中或每一个运行的表单的Load事件中。
[/Quote]

已经将main.prg设置为主程序 而且也在里边定义这些全局变量 还是一样丢失 断点调试的结果是当Computer_Lend 这个Form加载完之后 就丢失 ,另外已经搜索了整工程 没有发现了其他
Clear All
Release All
Close All
十豆三 2011-07-01
  • 打赏
  • 举报
回复
晕,你在等我们回复,我在等你按照19楼和21楼回复进行修改及测试呢。

你上传的例子缺少主表单 表单1.SCX 和 表单1.SCT
不用再传了,你将你定义这些变量的 Public 语句,改写到你第一个运行的程序(PRG)中或每一个运行的表单的Load事件中。
lawrendc 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wwwwa 的回复:]
上传你的表单、DBF到http://www.access911.net/CSDN/,用WINRAR压缩

可以重现问题
[/Quote]

请问老大 压缩包我已经上传上去了 ,有结果吗? 我自己也试了N次 就在Computer_Lend加载完成之后这些全局变量就丢失了,也不是全部丢失,就是丢失了一部分。
十豆三 2011-07-01
  • 打赏
  • 举报
回复
不用 As Character(20) 等,因为 VFP 在给变量覆值时自动将类型就确定了。
十豆三 2011-07-01
  • 打赏
  • 举报
回复
VFP 自带帮助语法为:
Public P_Department,P_TeamLeader,P_ProId,P_EngId,P_Pinchhitter,P_Place,P_Place

但VFP的智能感应却是允许

Public P_Department As Character(20), P_TeamLeader As Character(10),P_ProId As Character(10),P_EngId As Character(10),;
P_Pinchhitter As Character(10),P_Place As String ,P_ReturnDate As Date

所以我虽然没这样用过,但也被误导了。
lawrendc 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 apple_8180 的回复:]
Public P_Department As Character(20), P_TeamLeader As Character(10),P_ProId As Character(10),P_EngId As Character(10),;
P_Pinchhitter As Character(10),P_Place As String ,P_ReturnDate As Date

改为
……
[/Quote]
对 我把相同类型大小的放在一起定义 就可以了

谢谢 大家的帮忙
十豆三 2011-07-01
  • 打赏
  • 举报
回复
Public P_Department As Character(20), P_TeamLeader As Character(10),P_ProId As Character(10),P_EngId As Character(10),;
P_Pinchhitter As Character(10),P_Place As String ,P_ReturnDate As Date

改为

Public P_Department,P_TeamLeader,P_ProId,P_EngId,P_Pinchhitter,P_Place,P_Place
lawrendc 2011-07-01
  • 打赏
  • 举报
回复
终于找到的错误的地方了 是定义那儿出了问题

但我不知道为什么最开始可以赋值上,之后会出现值丢失


PUBLIC P_Department as Character(20), P_TeamLeader as Character(10),P_ProId as Character(10),P_EngId as Character(10),;
P_Pinchhitter as Character(10),P_Place as String ,P_ReturnDate as Date


是不同类型的变量不能放在一起定义的原因吧?
lawrendc 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 apple_8180 的回复:]

没看出来 Computer_Lend 表单有什么问题。

发现你挺爱用 过程 的,到处都是 do ... 而且代码量不小,光这么看,这么查,目前没找到原因。

你最好将能运行的源程序上传,并说明一下,先运行什么,再运行什么,其中点了什么按钮或控件,到哪步出现问题等。
[/Quote]

不会写程序 所以 不知道怎么样算是规范 谅解

程序已经上传了
Main.prg --> borrower_info.frm(填写相应的信息并提交)-->Computer_Lend.frm页面加载完毕后 断点调试 就出现全局变量里的
P_Proid,P_Engid,P_Place,P_User,P_TeamLeader均丢失,而这些变量在borrow_info.frm里均已赋值的



lawrendc 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 apple_8180 的回复:]

右单击此文件,选择 设置主文件(英文为Set Main)

但要注意,设置为主文件,那程序启动时就先运行主文件,你要在主文件中声明一些变量、环境设置并最后启动你的主表单。
[/Quote]

哦 好 谢谢 老大
十豆三 2011-06-30
  • 打赏
  • 举报
回复
右单击此文件,选择 设置主文件(英文为Set Main)

但要注意,设置为主文件,那程序启动时就先运行主文件,你要在主文件中声明一些变量、环境设置并最后启动你的主表单。
lawrendc 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 apple_8180 的回复:]

你上传的程序,说明一下,那个表单使用是出现你的问题?

另外发现你的 Main.prg 并不是主文件,也就是说启动时程序并不运行此程序,除非单独调用。
[/Quote]

其实在显示完Computer_lend这个界面就已经出现变量丢失了

另外,如何设置为主文件,谢谢
十豆三 2011-06-30
  • 打赏
  • 举报
回复
你上传的程序,说明一下,那个表单使用是出现你的问题?

另外发现你的 Main.prg 并不是主文件,也就是说启动时程序并不运行此程序,除非单独调用。
lawrendc 2011-06-29
  • 打赏
  • 举报
回复
好 我试试
十豆三 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lawrendc 的回复:]
好,对哦 我在关闭Foxpro的时候 弹出这样一个对话框:Data Session #1 can not be released with open transactions。 是什么原因
[/Quote]

将表单的 DataSession 属性改为 1



你可以这样:新建一个表单,然后引用这此变量看看是否可以引用?
lawrendc 2011-06-29
  • 打赏
  • 举报
回复
已上传
lawrendc 2011-06-29
  • 打赏
  • 举报
回复
好,对哦 我在关闭Foxpro的时候 弹出这样一个对话框:Data Session #1 can not be released with open transactions。 是什么原因
十豆三 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lawrendc 的回复:]
刚使你说的 加m.发现里边根本就没有这些变量 ,而我在main.prg里定义的其他Public变量却存在的
[/Quote]
整个工程搜索以下关键字
Clear All
Close All
Release All

xilaianzxsc 2011-06-29
  • 打赏
  • 举报
回复
肯定在什么地方释放了
加载更多回复(12)

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧