发布于 2011-10-24 21:01:26
19楼
关于DB与UDT问题:
1、当‘只’改变UDT的初值,则在打开DB后,DB中的对应数据的初值会自动更新,此时执行“用初值覆盖实际值”即可;但是,当程序中有受保护的块时,若更改了UDT中的初值,在打开DB时,虽然DB中对应的数据初值自动更新,但是只要一执行“保存”命令就会弹出“存储器溢出”对话框。
2、当‘只’改变UDT中的名称时,结果与上述相同;当有受保护的块时,也会弹出“存储器溢出”对话框。3、当改变UDT的数据结构时,如类型改变,即UDT占用字节空间大小更改,则保存UDT并关闭后,打开DB,则DB中的Struct……END_STRUCT之间又出现了一个Struct……END_STRUCT(不知有何作用)。只
要一点击“保存”就会出错,弹出“类型冲突”对话框,再点击就一直弹出“句柄无效”对话框。之后不保存关闭DB,则再也打不开DB了,双击DB会弹出“类型冲突,无法打开块”。若在修改UDT并保存关闭后,执行“检查块的一致性”,会发现DB有标红,此时编译DB,无错,但DB却打不开了。
对于平常的使用我采用以下做法:
1.在DB中定义UDT类型的数据时,留出一定的地址空间以备用;
2.当UDT改变时,若地址占用空间大小不变,则可删除DB中对应的UDT,再在同一位置定义相同的UDT(当然,不弹出“存储器溢出”就不用删);若UDT占用空间大小改变(对程序有影响),且弹出“存储器溢出”,则我只能删除DB,重新建DB。
关于以上,我用V5.5中文版,程序中有调用受保护的块(不知道如何去除保护,像FC105应该是受保护的块吧); 可能是我电脑问题,或是个人水平问题、或是软件我没有安装好,总之我不会解决,望高手们不吝指点,本人虚心以受。
如果你认为是对的事情,就要勇敢地去尝试;如果不去尝试,又怎么会知道结果呢?