Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
ВнизTListItems.Add Найти похожие ветки
← →
TUser © (2004-05-19 15:54) [0]Почему происходит ошибка в программе? Вроде бы на совершенно ровном месте. Есть ListView, пишем
with ListView1.Items do begin
...
with Add do begin
Caption:=
Checked:=
...
На Add вываливается AV и CPU window (на команде push). С Insert"ом - такой же результат. Даже не понимаю, в каком направлении копать.
← →
TUser © (2004-05-19 15:58) [1]Забыл написать - итемы добавляются в цикле. Первая итерация проходит нормально, а потом - бряк. До этому тоже итемы добавлялись и все было нормально.
← →
MU © (2004-05-19 16:02) [2]Такой код у меня работает. Приведите весь цикл полностью
← →
Гаврила © (2004-05-19 16:04) [3]убери with - заработает :-)))
← →
TUser © (2004-05-19 16:12) [4]Убрал with - вылетело на первой итерации.
Код цикла такой
procedure TForm2.SetFounds(Founds:TPairs);
var i,j,k,n:integer; f:boolean; li:TListItem;
begin
i:=0;
with ListView1.Items do begin
while i<Count do
if FTypes[i] = dtFound then begin
Delete(i);
for j:=i to length(FTypes)-2 do begin
FTypes[j]:=FTypes[j+1];
FData[j]:=FData[j+1];
end;
setLength(FTypes,length(FTypes)-1);
setLength(FData,length(FData)-1);
end else inc (i);
setLength(FFounds,length(Founds)); k:=0;
for i:=0 to length(Founds)-1 do begin
if k<length(form1.Domains) then
if form1.Domains[k]=i then
inc(k);
FFounds[i,0]:=Founds[i,0]; FFounds[i,1]:=Founds[i,1];
FFounds[i,2]:=Founds[i,2]; FFounds[i,3]:=Founds[i,3];
with Add do begin
Caption:="Found No "+inttostr(i-Form1.Domains[k-1]+1)+"; domain "+inttostr(k);
setLength(FTypes,length(FTypes)+1);
setLength(FData,length(FData)+1);
FTypes[length(FTypes)-1]:=dtFound;
FData[length(FData)-1,0]:=i;
n:=0; j:=0; f:=true;
while f and (j<length(FTypes)) do
if FTypes[j]<>dtDomain then
inc (j)
else begin
inc(n);
if n = k-1 then
f:=false
else inc (j);
end;
f:=false;
if (Founds[i,0]<FData[j,0]) or (FData[j,0]=-1) then begin
FData[j,0]:=Founds[i,0];
f:=true;
end;
if (Founds[i,3]+2>FData[j,1]) {or (FData[j,1]=-1)} then begin
FData[j,1]:=Founds[i,1]+2;
f:=true;
end;
if f then
ListView1.Items.Item[j].Caption:="Domain "+inttostr(FData[j,0])+"-"+inttostr(FData[j,1]);
Checked:=false;
end;
end;
end;
end;
← →
MU © (2004-05-19 16:24) [5]И теперь по шагам пройдите и укажите строчку, на которой возникает ошибка
← →
Гаврила © (2004-05-19 16:39) [6]Видимо, где-то вылез за границу динамического массива
← →
TUser © (2004-05-19 16:40) [7]Все, сообразил. Конечно, перепутал с индексами. Ошибка возникала на with Add do begin, но это был трабл отладчика. Перезагрузился, теперь ошибку выдает там, где она и есть, на ListView1.Items.Item[j] - такого итема еще не существует.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c