我目前在VFP 9 SP2中遇到了一个非常邪恶的错误。
我创建了一些表单和类,我的程序运行得很好。无论如何,程序崩溃并且不会响应任何事情,关闭它的唯一方法是通过taskmanager。
我浏览了所有代码但没有发现任何内容,但后来我不小心在我班级的容器中添加了一个简单的命令按钮(也许它只是正确的容器^^)并且它工作正常!
但是没有这个按钮的位置,我想摆脱它,每次我试图删除它,我的程序再次崩溃。 我在整个项目中用“go fish”多次搜索 - 没什么!
然后我打开.vct并找到一条似乎没有引用的行,并且从未在此类中使用过。 我将此解释为来自Foxpro的错误,可能是其余的代码未按照应有的方式删除。 当我试图删除它时,我的整个classlib都被破坏了。
如果我尝试将我的按钮中的.Visible-Property设置为.f。,结果将是相同的 - 崩溃。
所以我不得不摆脱它。 这堂课太大了,无法重写。
如果您对如何解决问题提出任何建议,我会很高兴。
答案 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 !"
...