VFP 9 - 无法在程序崩溃的情况下删除Commandbutton

时间:2014-11-17 13:44:45

标签: foxpro visual-foxpro

我目前在VFP 9 SP2中遇到了一个非常邪恶的错误。

我创建了一些表单和类,我的程序运行得很好。无论如何,程序崩溃并且不会响应任何事情,关闭它的唯一方法是通过taskmanager。

我浏览了所有代码但没有发现任何内容,但后来我不小心在我班级的容器中添加了一个简单的命令按钮(也许它只是正确的容器^^)并且它工作正常!

但是没有这个按钮的位置,我想摆脱它,每次我试图删除它,我的程序再次崩溃。 我在整个项目中用“go fish”多次搜索 - 没什么!

然后我打开.vct并找到一条似乎没有引用的行,并且从未在此类中使用过。 我将此解释为来自Foxpro的错误,可能是其余的代码未按照应有的方式删除。 当我试图删除它时,我的整个classlib都被破坏了。

如果我尝试将我的按钮中的.Visible-Property设置为.f。,结果将是相同的 - 崩溃。

所以我不得不摆脱它。 这堂课太大了,无法重写。

如果您对如何解决问题提出任何建议,我会很高兴。

3 个答案:

答案 0 :(得分:0)

您描述的崩溃类型通常表示表或索引中存在某种类型的损坏。你可能会尝试几件事:

1)备份表单,然后使用它和PACK。

2)使用表单并将其复制到新文件。然后重命名原件,然后重命名副本,看看新副本是否表现得更好。

答案 1 :(得分:0)

除了Tamar提到的,备份后,如果你使用表格作为dbf,如

use MyForm.scx  [enter]
browse for baseclass = "commandbutton"

如果您查看备忘录字段,请打开" objName"的备忘录字段。并查看是否是您添加的那个。如果是,请删除该条目,然后关闭浏览并打包该表。这应该只删除单个元素。

然后,关闭MyForm.scx后,对于grins,强制通过

重新编译表单
COMPILE FORM MYFORM

答案 2 :(得分:0)

除了其他帖子之外:如果你有一堆vcx / scx文件(DBF也是如此!),那么缩小这些文件被破坏的位置可能会有所帮助,因为可能存在多个损坏的备忘录文件或记录。 / p>

在发出SET DELETED OFF 之后,只需创建"复制到"所有文件的复制品 这将创建具有相同记录号的副本。

然后循环遍历每对表的所有记录,并比较具有可读(=非二进制)内容的备注字段。

字段内容应该只有 IF 存在任何备忘录损坏

close all
set deleted off
use tabel1_copy.scx
select 0
use table1.scx
SET RELATION to RECNO() INTO tabel1_copy
scan all 
  If  table1.field1 != table1_copy.field1
    ? "Houston we have a problem !"  
  ...