Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2013, 21:34   #1
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию Парсер, ошибка на form2 или 3

добрый вечер, я тут делал одну программу для себя и наткнулся на одну ерунду!
Вот код парсера,

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, MSHTML;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure WebBrowser1DocumentComplete(ASender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure WebBrowser1NavigateComplete2(ASender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure WebBrowser1BeforeNavigate2(ASender: TObject;
      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
      Headers: OleVariant; var Cancel: WordBool);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  CurDispatch: IDispatch;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate('http://finviz.com/insidertrading.ashx?tc=2');
end;

procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin (ASender as TWebBrowser)
  .hide;
end;

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; // Документ комплит
  const pDisp: IDispatch; var URL: OleVariant);
var
  DocA: IHTMLElementCollection;
  doc: IHTMLDocument2;
  Element: IHTMLElement;
  i: integer;
  fl: boolean;
begin
  if (pDisp = CurDispatch) then
  begin
    doc := ((pDisp as IWebBrowser).Document as IHTMLDocument2);
    DocA := doc.body.all as IHTMLElementCollection;
    i := 0;
    fl := true;
    while (i < DocA.length) and fl do
    begin
      Element := DocA.item(i, 0) as IHTMLElement;
      if Element.className = 'body-table' then
      begin
        doc.body.innerHTML :=
          '<span class="time-text" id="time"></span>' + Element.outerHTML;
        fl := false;
      end;
      inc(i);
    end; (ASender as TWebBrowser)
    .show;
    CurDispatch := nil;
  end;
end;

procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject; // он навигейт  комплит 2
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if CurDispatch = nil then
    CurDispatch := pDisp;
end;

end.
На первой форме он работает нормально, но стоит мне создать вторую форму и кинуть то он не отображает мне ни чего, компилируется без проблем... Подскажите как этого избежать? просто я в программе использую 3 Формы и на каждой по одному веб браузеру поставил. Потом вот так и наткнулся на эту проблему) Может где что подправить нужно мне?
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 19.11.2013, 21:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну и как ты кинул? Прикрепи проект в архиве сюда.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2013, 21:40   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

я правильно понимаю что в проекте вы создали 3 одинаковые формы и когда прога работает то не все работают правильно?
eval вне форума Ответить с цитированием
Старый 20.11.2013, 19:57   #4
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

http://rghost.ru/50312083
Вот проект, я создал там 2 формы в верхнем меню первая вкладка, да и вообще будут много окон и хотелось бы чтоб все работали исправно а не как у меня)))
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 20.11.2013, 20:18   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Unit1 in '..\Unit1.pas' {Form1},
Unit2 in '..\Unit2.pas' {Form2},
Unit3 in '..\Unit3.pas' {Form3},
Unit4 in '..\Unit4.pas' {Form4},
Unit5 in '..\1\Unit5.pas' {Form5};
И где они?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2013, 20:52   #6
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
И где они?
Все тама же, ща еще раз проверю и залью по новой!
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 20.11.2013, 20:53   #7
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

вот
http://rghost.ru/50313427
извините что сразу не добавил...
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Fahman; 20.11.2013 в 21:03.
Fahman вне форума Ответить с цитированием
Старый 20.11.2013, 21:05   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот и пришло время тебе познакомится с отладкой.
Ставь точки прерывания на все обработчики на первые их операторы, запускай, лови бряк, и пошаговкой проходи по программе. Смотри как Делфи будет реагировать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2013, 21:59   #9
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вот и пришло время тебе познакомится с отладкой.
Ставь точки прерывания на все обработчики на первые их операторы, запускай, лови бряк, и пошаговкой проходи по программе. Смотри как Делфи будет реагировать.
Можно примеры или статьи? очень нужно сделать) буду учить) самому интересно парсить) хочу стать профи парсерам)

Блин а вот еще 1 способ, например я сохраню страничку потом открою через веббраузер и буду подгружать ее? но проблема та в том что там куча скриптов, и я даже не зню что за чо отвечает(( Не знаю уже что делать) пробовал даже сохранить страницу потом убирать не нужные теги и сохронять страницу потом в исходном коже указывал путь но скрипта ( вводил адрес сайта перед путем скрипта) Не канает) страницу и на хост кидал тоже не как)
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Stilet; 20.11.2013 в 23:21.
Fahman вне форума Ответить с цитированием
Старый 20.11.2013, 23:00   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

беда беда .
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
Ошибка чтения памяти при посылки дублирующей команды Close Вспомогательной Форме (Form2) deryt Общие вопросы Delphi 4 09.01.2012 22:14
Передать в процедуру имя формы (Form1 или Form2) tarakan1983 Общие вопросы Delphi 2 19.11.2011 00:39
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
Ошибка в temp... виноваты динамичсекие массивы или тип не тот или.. Shabalinuk C++ Builder 5 12.11.2010 12:38