Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при обработке таблицы 
:(
    Опции темы
progbeg
  Дата 24.12.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



Доброго времени суток!
   В webbrowser загружается страница с таблицами, по ячейкам которой надо пройти и собрать информацию. Периодически вылетает ошибка доступа (read address$00000)
Код

while k<=ovElements.Length-1 do // перебор таблиц
     begin
      ovTable:=Form1.Webbrowser1.OleObject.Document.all.tags('TABLE').item(k);  // конкретная таблица
       Inc(k);
        for i:=0 to ovTable.Rows.Length - 1 do  //строки
          begin
            str:=ovTable.Rows.item(i).InnerText;
            if str<>'' then
              begin
            if StrPos(PChar(str),PChar('ãîäà'))<>nil then
              begin
                dat:=data(str,4);
                dd.date:=dat;
                str:=ovTable.Rows.item(i).InnerText;
              end;
         if (str[1] in ['0'..'9']) and (str[3]<>' ') and (Pos('/',str)=0) and (Pos(';',str)=0) then
         for j := 0 to 15 do //ячейки
              begin
                if ovTable.Rows.Item(i).Cells.Item(j).InnerText<>'' then        // вот здесь delphi указывает на ошибку
                   begin
                     if ovTable.Rows.Item(i).Cells.Item(j).InnerText=' ' then s1:='1'
                     else
                        s1:=ovTable.Rows.Item(i).Cells.Item(j).InnerText;

                  case j of
                    0: dd.time:=s1;
                    1: dd.name:=s1;
                    2: dd.f1:=s1;
                    3: dd.k1:=s1;
                    4: dd.name:=dd.name+'  '+'-'+'  '+s1;
                    5: dd.f2:=s1;
                    6: dd.k2:=s1;
                    7: dd.p1:=s1;
                    8: dd.x:=s1;
                    9: dd.p2:=s1;
                    10: dd.z1:=s1;
                    11: dd.z22:=s1;
                    12: dd.z2:=s1;
                    13: dd.all:=s1;
                    14: dd.no:=s1;
                    15: begin
                         dd.no1:=s1;
                         dd.date:=dat;
                         bb:=dd.date+' '+dd.time+' '+dd.name+'  '+dd.p1+' '+dd.x+' '+dd.p2+
                              ' '+dd.z1+' '+dd.z22+' '+dd.z2+' '+dd.f1+' '+dd.k1+' '+dd.f2+' '+
                              dd.k2+' '+dd.all+' '+dd.no+' '+dd.no1;
                              for count:=1 to length(bb) do
                                  if (bb[count] in ['0'..'9'] ) and (bb[count+1]='.') then
                                    begin
                                      Delete(bb,count+1,1);
                                      Insert(',',bb,count+1);
                                      if (bb[count]=' ') and (bb[count+1]=' ') and (bb[count+2]=' ') then
                                         Delete(bb,count,1);
                                    end;
                              Writeln(f,bb);

                        end;
                  end;
                str:='';
               end;
              end;
          end;

Никаких пустых элементов вроде на странице нет, но даже если бы и были, всё равно непонятно, отчего появляется ошибка. Все таблицы вроде как одинаковые (количество строк и ячеек).
PM MAIL   Вверх
December
Дата 24.12.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Модератор
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



на какой точно строке вываливается? это 90% ответа


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
progbeg
Дата 24.12.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



на 20
оттрасировать пока что не могу - на данный момент ошибки нет

Это сообщение отредактировал(а) progbeg - 24.12.2006, 17:20
PM MAIL   Вверх
December
Дата 24.12.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Модератор
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



В момент выполнения кода документ полностью загружен? есть ли в таблице colspan'ы? Если вместо константы 15 использовать ovTable.Rows.Item(i).Cells.Length - ошибка остаётся?


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
progbeg
Дата 4.1.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



Документ не всегда догружается, хотя стоят задержки. Colspan'ы есть. Если поставить заместо константы постоянно вычисляемую величину, то ошибки нет - по крайней мере, пока.
PM MAIL   Вверх
Google
  Дата 20.2.2020, 09:04 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0865 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.