Главная страница
    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.045 c
14-1084386179
lak
2004-05-12 22:22
2004.05.30
задача


14-1084048044
Rouse_
2004-05-09 00:27
2004.05.30
Всеже позволю себе смелость....


9-1075640127
DrOne
2004-02-01 15:55
2004.05.30
Triangle Strip


3-1084034065
AVKAR
2004-05-08 20:34
2004.05.30
Lookup-поле


8-1079904163
dance
2004-03-22 00:22
2004.05.30
gif





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