Rob*_*ler 6 delphi exception sorted tstringlist sortedlist
在Delphi 6中,如果您尝试将对象插入到已排序的TStringList(Sorted = true),则会抛出异常,警告您在排序列表上不允许使用InsertObject().如果调用InsertObject()必然意味着破坏列表的Sorted顺序,我可以理解这一点.但鉴于TStringList.Find()方法:
function TStringList.Find(const S: string; var Index: Integer): Boolean;
Run Code Online (Sandbox Code Playgroud)
返回一个索引,告诉你如果给定字符串添加到列表中的插入索引应该是什么,使用该索引调用InsertObject()应该在操作后保持排序列表仍然按排序顺序.我已经检查了TStringList的Delphi源代码,它似乎证实了我的断言.
现在我只是为TStringList创建一个新的子类,它覆盖了InsertObject(),并且如果在排序列表中调用了InsertObject(),则不会抛出异常,但我想确保没有一些隐藏的危险我我只是没有看到.
- roschler
您应该只调用AddObject排序列表.
如果InsertObject检查排序列表上的"正确"索引,那么您将面临测试噩梦:在某些情况下,您的代码似乎可以正常工作,但如果输入数据发生更改,则会突然开始抛出异常.或者,如果InsertObject忽略Index参数,那么它的行为将非常不直观.
InsertObject如果列表已排序,总是抛出更好.
| 归档时间: |
|
| 查看次数: |
1163 次 |
| 最近记录: |