| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 716 人关注过本帖
标题:有时会碰到无法访问某磁盘。程序退出后,再做,又可以了
只看楼主 加入收藏
naviewq
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-6-10
结帖率:0
收藏
已结贴  问题点数:10 回复次数:9 
有时会碰到无法访问某磁盘。程序退出后,再做,又可以了
我现在做的程序相当庞大。最近,碰到一个很劳心的问题。在WIN2008(64位)环境,VFP9 SP2(梅)中,程序运行过程,有时会碰到无法访问某磁盘。程序退出后,再做,又可以了。原因不明呵。
我怀疑是内存溢出造成的,我有近100个按钮功能,按登录的用户出现,不用的按钮不展现。有没有办法在SCX中对此用户的没用的按钮自动释放空间。
搜索更多相关主题的帖子: 空间 用户 
2015-05-26 09:25
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:4 
1、可能是输入输出(I/O)连接异常,网络盘的网路连接异常也会有这种情况。
2、可用AddObject、RemoveObject方法动态创建按钮。
2015-05-26 11:25
naviewq
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-6-10
收藏
得分:0 
1、可能是输入输出(I/O)连接异常,网络盘的网路连接异常也会有这种情况。
  本地盘也一样。因此,不可能是网络连接异常问题造成的。经常是运行一段时间后,才会出现此问题,重新运行程序时,这种故障又消失了。
2、可用AddObject、RemoveObject方法动态创建按钮。
  这个方法比较可行,主要是我是直接用SCX方式编写。作为公司内部使用的软件,具体的一些小模块,还得请其它同事维护,修改。若能用SCX编写,再自动转化为ADDOBJECT、REMOVEOBJECT就好了。
   不知道有没有将SCX的东西直接转化为程序的,谢谢
2015-05-26 13:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
I/O通常说的是输入输出设备,本地盘也是。
VFP读写文件异常时也会报I/O错。
2015-05-26 14:41
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:4 
根据用户的权限动态添加按钮,而不是隐藏(不可见)不需要的按钮。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-05-26 21:39
naviewq
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-6-10
收藏
得分:0 
根据用户的权限动态添加按钮,而不是隐藏(不可见)不需要的按钮。
咨询:如何用SCX方式实现动态添加按钮。请指教,谢谢
2015-05-28 17:09
naviewq
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-6-10
收藏
得分:0 
也就是说用SCX方式编写程序,再如何变成动态添加按钮?
2015-05-28 17:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用naviewq在2015-5-28 17:10:49的发言:

也就是说用SCX方式编写程序,再如何变成动态添加按钮?

动态编程少不了自己封装类。
参考示例:用SCX的看看表单部份两个按钮的Click事件代码就可以。

程序代码:
** test.prg
    * do form 
of = CREATEOBJECT("_Form")
of.Show(1)
CLEAR ALL 
RETURN

DEFINE CLASS MyCommand as CommandButton
    Width = 80
    Height = 25
    Visible = .T.
    
    PROCEDURE Init(nTop, nLeft)
        this.Top  = nTop
        this.Left = nLeft
    ENDPROC

    PROCEDURE Click
        MESSAGEBOX("点击按钮"+this.Caption)
    ENDPROC
ENDDEFINE
** end test.prg


** 表单
DEFINE CLASS _Form AS Form
    AutoCenter = .T.
    ADD OBJECT Command1 as CommandButton WITH Top=10,Left=10,Height=22,Caption="创建按钮"
    ADD OBJECT Command2 as CommandButton WITH Top=10,Left=120,Height=22,Caption="释放按钮"
    
    PROCEDURE Command1.Click
        IF (VARTYPE(thisform.Cmd1) != "O")
            thisform.AddObject("Cmd1", "MyCommand", 50, 10)
        ENDIF
        IF VARTYPE(thisform.Cmd2) != "O"            
            thisform.AddObject("Cmd2", "MyCommand", 80, 10)
        ENDIF
    ENDPROC

    PROCEDURE Command2.Click
        IF VARTYPE(thisform.Cmd1) == "O"
            thisform.RemoveObject("Cmd1")
        ENDIF
        IF VARTYPE(thisform.Cmd2) == "O"
            thisform.RemoveObject("Cmd2")
        ENDIF
    ENDPROC
ENDDEFINE
** end 表单
2015-05-28 21:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
基本上不会是内存不足造成,100多个“按钮的代码”,谅你也不会超内存容量——没谁有这种能耐写出可以超内存容量的代码。

授人以渔,不授人以鱼。
2015-05-29 11:56
naviewq
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-6-10
收藏
得分:0 
问题解决:是由于filetostr打开一个300M的日志文件造成的,现已解决。
2015-08-23 09:32
快速回复:有时会碰到无法访问某磁盘。程序退出后,再做,又可以了
数据加载中...
 
   



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

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