Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-1082303801
Xtz
2004-04-18 19:56
2004.05.30
Как по Pid процеса узнать инфу о нем?


14-1084074388
Апач
2004-05-09 07:46
2004.05.30
Вечный вопрос: Мужчина и Женщина


14-1083952838
Blackman
2004-05-07 22:00
2004.05.30
Стишок на ночь


1-1084640336
zep
2004-05-15 20:58
2004.05.30
MaskEdit и UpDown


7-1082307832
kat
2004-04-18 21:03
2004.05.30
В чем кроме paramstr могут передаваться параметры.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский