主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.07.29;
下载:[xml.tar.bz2];

向下

删除对象时出错 找到类似的分支


TTCustomDelphiMaster   (2002-07-16 21:06) [0]

亲爱的同事们,帮我解决程序中的错误。
关于程序:某个对象(TbaseObj)及其子代具有许多可视图像(类似于TTreeNode,TtreeView,Tlabel等)。 通过该目的,执行图像管理。
关于问题的信息:当TtreeView分支最小化时,可视图像被大量删除,这又导致对象本身的大量移除(请参阅过程TBaseObj.DelVisObj(VisObj:TObject);)。 在某些情况下,这会导致读取地址FFFFFFFF的错误AV地址004a7cf2 ...无法确定此错误的某些规律性。
在我看来,多次并行调用ClearDelList方法。 其中一个已经删除了DelList [0],第二个正在尝试访问该对象,并且发生错误。
我们设法通过使用计时器(这是发件人:Tobject的来源)设置时间延迟来克服此错误,而在最后一条WM_ClearDelList消息之后,仅对ClearDelList进行一次调用。 我暂时切断了计时器及其附带的所有物品。
注意问题:
Windows或处理器可以并行调用ClearDelList吗?
是否有关于如何以另一种方式组织清除的想法?



TTCustomDelphiMaster   (2002-07-16 21:09) [1]

该程序的片段:
TUniversalList =类 FormHandle:HWND; 删除:布尔值; NotVisList:TObjectList; DelList:TObjectList; TabMenager:TTableMenager; DelTimer:TTimer; 构造函数CreateHND(FormHND:HWND; TabMen:TTableMenager); 函数AddVisObj(VisObj:TObject; Idn:整数; KodType:整数):TBaseObj; 程序ClearDelList(Sender:TObject); 结束 //基类 TBaseObj =类 FormHandle:HWND; DelList:TObjectList; 范围:TObjGrup; ChildRange:TObjGrup; IDn:整数; Num:整数; KodType:整数; IdnInfo:整数; SourceTable:TTable; InfoTable:TTable; VisObjList:TObjectList; //过程ChangeParam(); 虚拟 //更改对象属性 构造函数CreateObj(TabMan:TTableMenager; ParentIdn:整数; ParentKodtype:整数); 虚拟 构造函数HideCreate(TabMan:TTableMenager; Idnobj:整数); 虚拟 过程ShowProperty(); 虚拟 过程DelVisObj(VisObj:TObject); 函数GetName():字符串; 过程SetVisObj(com:整数; param:整数); 结束 过程TUniversalList.ClearDelList(Sender:TObject); //不注意发件人 开始 如果(不删除)和(DelList.Count> 5)然后 开始 删除:= True; 而DelList.Count <> 0做 开始 如果((DelList [0] as TBaseObj)。VisObjList.Count = 0),则//程序因错误而在此处停止 开始 NotVisList.Remove(DelList [0]); DelList.Delete(0); 结束 别的 开始 DelList.Delete(0); 结束 结束 删除:= False; 结束 结束 过程TForm2.WndProc(Var Msg:TMessage); 开始 如果Msg.Msg = WM_ClearDelList,则 开始 GUnList.ClearDelList(nil); 结束 继承 结束 过程TBaseObj.DelVisObj(VisObj:TObject); 开始 VisObjList.Remove(VisObj); 如果VisObjList.Count = 0,则 开始 DelList.Add(Self); PostMessage(FormHandle,WM_ClearDelList,0,0); 结束 结束



TTCustomDelphiMaster   (2002-07-16 23:01) [2]

发现一个错误! 是的,我想到的是如此之重,以至于实施的所有微妙之处都无法一in而就。 有时,在项目工作中休息会很有用。 当您回到他身边时,您会以一种完全不同的方式看着他。 因此,在这个项目中,我一直在寻找一个星期的错误,甚至出现了一些令人难以置信的愚蠢假设,两个月后我坐下来,在七分钟内解决了问题。



Страницы: 1 整个分支

论坛:“主要”;
当前存档:2002.07.29;
下载:[xml.tar.bz2];

楼上





内存:0.56 MB
时间:0.02 c
1-95350
还是沼泽
2002-07-17 21:03
2002.07.29
msexcel的


14-95526
电子人
2002-07-01 21:51
2002.07.29
哇!


1-95357
亚历克斯SV
2002-07-18 10:44
2002.07.29
如何使用打印机


1-95402
SDRAM
2002-07-16 11:19
2002.07.29
DBGrid中


14-95561
Tahion
2002-06-25 10:15
2002.07.29
如何使表单出现?





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法语
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 淡米尔文 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский