Главная страница
    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
8-1079528146
16xmax
2004-03-17 15:55
2004.05.30
Графика


3-1083739104
Курдль
2004-05-05 10:38
2004.05.30
Несколько безымянных savepoint-ов и один откат. Куда откатит?..


14-1084360870
bon
2004-05-12 15:21
2004.05.30
Как отменить все сообщения, посылаемые окну?


14-1084535399
Соловьев
2004-05-14 15:49
2004.05.30
У кого-то получилось откомпилить клиента форума - DMClient?


14-1084047738
Swed
2004-05-09 00:22
2004.05.30
Справка о справке





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский