【发布时间】:2011-05-18 15:25:36
【问题描述】:
我有一个名为 CModelItem 的 TObject 类型的类
我想要一个这些对象的列表,并且能够修改每个对象的值
所以,我创建了一个类
CQueueList = class(TList)
private
public
end;
我做
QueueList : CQueueList;
在变量中
现在,我可以将 CModelItem 添加到此列表中,如下所示:
QueueList := CQueueList.Create;
for idx := 0 to ndx - 1 do
begin
MyItem := CModelItem.Create;
MyItem.CopyHead(CModelItem(RunList.Objects[idx]));
MyItem.ReadData;
MyItem.NumOfIterations := NumRepEdit.Value;
MyItem.IsInQueue := True;
MyItem.LogEvents := EventsCheckBox.Checked;
MyItem.LogMatch := MatchCheckBox.Checked;
MyItem.LogUpdates := UpdatesCheckBox.Checked;
QueueList.Add(MyItem);
end;
我也可以用,所以我可以这样做:
DefForm := TRunDefForm.Create(Self, QueueList.Items[idx]);
DefForm 接收一个组件和一个 CModelItem
但我在尝试修改 QueueL 中对象的值时遇到了问题
首先,我无法访问 MyItem.IsInQueue 之类的东西
QueueList.Items[idx].IsInQueue := blah;
因为它告诉我 IsInQueue 是“未声明的标识符”
我也尝试过创建一个新的 CModelItem 并将信息复制过来,如下所示:
idx := QueueListBox.ItemIndex;
MyItem := QueueList.Items[idx];
这编译得很好,但是当它进入那个函数时会抛出一个“访问冲突错误”
我注意到 QueueList.Items[idx] 是一个指针,但我真的不确定我应该如何访问它
【问题讨论】:
-
根据您显示的代码,您正在正确访问您的列表。你的问题在别处。 AV 发生在哪个地址?零,还是别的什么?是读还是写?