Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB6静默删除表单中的大块控件数据_Vb6_Ide_Corruption_Frm - Fatal编程技术网

VB6静默删除表单中的大块控件数据

VB6静默删除表单中的大块控件数据,vb6,ide,corruption,frm,Vb6,Ide,Corruption,Frm,我的项目在一个SSTab(4个选项卡)中可能有130个控件(所有标签、文本框等的总数)。项目加载良好,运行良好,我在任何时候都看不到任何错误或警告,但是当我保存带有SStab的表单时,SStab数据没有保存(它完全消失)。通常,.frm文件的相关部分如下所示: Begin TabDlg.SSTab SSTab1 Height = 8895 [1550 more lines of code for all the controls] Width

我的项目在一个SSTab(4个选项卡)中可能有130个控件(所有标签、文本框等的总数)。项目加载良好,运行良好,我在任何时候都看不到任何错误或警告,但是当我保存带有SStab的表单时,SStab数据没有保存(它完全消失)。通常,.frm文件的相关部分如下所示:

Begin TabDlg.SSTab SSTab1 Height = 8895 [1550 more lines of code for all the controls] Width = 540 End Begin VB.Menu FileMenu 开始TabDlg.SSTab SSTab1 高度=8895 [1550多行代码用于所有控件] 宽度=540 终点 开始VB.Menu文件菜单 但最近它被裁剪成:

Begin TabDlg.SSTab SSTab1 Begin VB.Menu FileMenu 开始TabDlg.SSTab SSTab1 开始VB.Menu文件菜单 这太令人沮丧了!在我的VB IDE中,框架、sstab和所有控件都在那里,可编辑、运行/编译良好,在任何时候都没有错误消息,但是当保存文件时,1550行宝贵的sstab数据就消失了——同样,没有警告或错误消息。因此,如果退出并重新启动IDE,就会出现一个表单加载错误,因为现在缺少60%的代码。日志文件指向它发现的第一个错误(在本例中是一个没有结束的Begin选项卡)-其中没有其他信息。(日志文件是在代码被删除和保存后生成的,因此它没有帮助是有道理的。)

当我第一次发布这个问题时,我认为它与控件的数量有关,因为它出现在我添加控件之后,在我最初的几次测试中,当该控件(或其他控件)被删除时,它似乎消失了。现在,我似乎无法在任何情况下保存该表单,即使我删除了许多控件(使控件的数量远远低于上次稳定时的数量)

我还尝试删除SStab并将所有控件移动到4个不同的帧。我在IDE中成功地做到了这一点,但当我保存时,一大块数据(从一个滑块控件开始)丢失了。所以我完全不知道发生了什么

这个问题在两台不同的电脑上都可以重现,因此它似乎不是硬件/损坏的软件VB安装问题


是否有其他人遇到过类似的情况?

不确定这是否是问题所在,但在VB6窗体上,命名控件的数量限制为255个(或256个)。也许你遇到了这个问题

绕过该限制的一种方法是使用控制阵列。例如,如果有10个标签,而不是label1、label2、label3等,则可以从标签(0)到标签(9),并且只使用一个命名控件

关于SSTAB,另一件值得一提的事情是它显示/隐藏控件的方式。虽然这些控件似乎位于单独的选项卡上,但实际发生的情况是,这些控件被移动到了WAAAYYYY的左侧(因此不在视图中)。也许有这么多的组件,SSTAB在IDE中试图在设计视图中呈现控件时会被这一点卡住


同样,我也不确定这是否是问题所在,但我知道这两个花絮相对来说是未知的。

听起来很可怕,从未听说过这样的事情

在表单损坏之前将表单加载到IDE中时,您可能没有从VB6获取错误日志文件?日志文件的文件名与表单文件相同,但扩展名为.log。例如,如果加载Myform.frm时出错,Visual Basic将创建一个名为Myform.log的日志文件。您可能会在手册中看到错误消息

有一个,看看它是否记录了任何有关VB6 IDE的有趣问题

你用的是什么奇怪的控件吗?也许其中一个在某种程度上腐蚀了FRM或FRX。显然,FRM文件是文本&其格式记录在VB6手册中。您能在文本编辑器中看到FRM中的任何损坏吗?如果删除FRX中定义的任何属性,是否仍会失败


我想我会尝试创建一个新项目和一个新表单,然后使用IDE将所有控件定义复制并粘贴到其中—无需代码。使用新表单,看看它是否有相同的问题。也许你可以用这种方式重新创建表单而不会出现问题。如果新表单确实存在问题,请执行相同的操作,但只使用一半的控件。也许您可以通过“二进制搜索”找到有问题的控件。

因此保存功能不起作用

我怀疑你放在标签条上的一个组件就是罪魁祸首

所以

1) 对您在表格上放置的每种组件进行清点

2) 消灭一种,保存一种

3) 它救了我吗

->是=这是有问题的控件

->否=返回步骤2,但选择另一种

当然,在步骤2中删除所有特定类型的控件(例如,所有标签或所有文本框等)非常重要


但是,我从未听说过这种情况。

为每个选项卡创建一个用户控件。这使得编辑变得更加容易。它还允许您很好地模块化代码,因此每个选项卡都位于自己的文件中,如果您愿意,它还允许您在其他地方重用选项卡。

您并不孤单!我看到了这个问题。事实上,我现在正在处理它,这就是我来到这个网站的原因

我从94年开始使用VB(VB3),大约5、6年前我在使用VB6时第一次看到这个问题。那么,我的解决方案与您从上面回答的好朋友那里得到的一些建议没有什么不同:扔掉现有文件,在新文件中重建表单。我也这么做了,受影响的形式一直有效

我当前的问题以另一种更新的形式出现,替换/重建选项(大约一个月前执行)只工作了大约三周。现在问题又回来了,文件的每个新迭代都会很快损坏。在上面关于允许的控件总数的回复之后,我正在调查我有多少个控件。碰巧的是,我