Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Вниз

Как прописать процедуру, где?   Найти похожие ветки 

 
Nox321   (2006-03-07 18:16) [0]

Как прописать процедуру, где?
Пишу программу для закачки и анализа html страниц(типа: поисковик текста на станица). Использую для каждой закачки отдельные процессы. Мне нужна процедура, которая бы обрабатывала скачанную страницу, а затем удаляла ее. Как ее прописать в коде, где(type, public, и дальше)?
Описание процедуры:
procedure Analis(var url,catalog:string; i:integer);
url - url скачанной странички (нужен только для записи в файл)
catalog - место ее нахождения
i - названия отличаются только по конечной цифре(body1.html  ;  body2.html  ; ...  ;  body45.html )  

В самой процедуре будет производиться поиск куска текста и дальнейшая его запись в формате *.txt
Пример содержимого файла *txt :
www.test1.ru Привет Вася
www.tet1.forum.ru как дела Галя?
...

сам код программы:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Psock, NMHttp, StdCtrls;

type
 THTTPThread = class(TThread)
 private
    {Для каждого процесса - создаем свой компонент TNMHTTP}
   FHTTP: TNMHTTP;

 protected
// Execute вызывается при запуске процесса; override - заменяем
// существующую процедуру базового класса TThread
   procedure Execute; override;
// DoWork - созданная нами функция, выполнение которой синхронизируется в Execute
   procedure DoWork;

  // procedure Search(var www,cat:string; i:integer);
 public
// URL - созданная нами строка, указывающая процессу, какой URL ему нужно скачать
   URL: string;

 end;

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Button1: TButton;
   Label1: TLabel;
   ListBox1: TListBox;
   Button2: TButton;
   Button3: TButton;
   Label2: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   public
 //   Суда ее ставить?

   end;

var
 Form1: TForm1;
 input,output:text;

implementation

{$R *.dfm}

//procedure Analis(var url,catalog:string; i:integer);
//begin
      //пока еще не написал что тут будет делаться
//end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 {Удаление выделенного URL из списка}
 if ListBox1.ItemIndex >= 0 then
   ListBox1.Items.Delete(ListBox1.ItemIndex);
end;

procedure TForm1.Button2Click(Sender: TObject);
 var s: string;
begin
 {Добавление URL в список}
 s := InputBox("Добавить","Введите URL:","");
 if s <> "" then
   ListBox1.Items.Add(s);
end;

procedure TForm1.Button1Click(Sender: TObject);
 var i: Integer;
begin
 if Length(Edit1.Text) > 0 then
   if not DirectoryExists(Edit1.Text) then
     MkDir(Edit1.Text);

 for i := 0 to ListBox1.Items.Count-1 do begin
   with THTTPThread.Create(True) do begin

     URL := ListBox1.Items[i];
     Resume;
   end;
 end;
end;

procedure THTTPThread.Execute;
begin

 Synchronize(DoWork);
end;

procedure THTTPThread.DoWork;
 var i: Integer;
begin

 FHTTP := TNMHTTP.Create(Form1);

 FHTTP.InputFileMode := True;

 i := 1;
 while FileExists(Form1.Edit1.Text+"\body"+IntToStr(i)+".html") do
   Inc(i);

 FHTTP.Body := Form1.Edit1.Text+"\body"+IntToStr(i)+".html";
 FHTTP.Header := Form1.Edit1.Text+"\header"+IntToStr(i)+".txt";

 FHTTP.Get(URL);

 //!!!!!!!!!!здесь ее нужно вызвать!!!!!!!!!!!!!!!!!
 FHTTP.Free;
end;

end.


 
API ©   (2006-03-07 18:31) [1]

//   Суда ее ставить?

Зачем?

//!!!!!!!!!!здесь ее нужно вызвать!!!!!!!!!!!!!!!!!

Ну так и вызывайте: Analis(<параметры>)


 
YurikGL ©   (2006-03-07 19:18) [2]

Если ты ее хочешь вставить сюда то объявлять ее надо будет

procedure TForm1.Analis(var url,catalog:string; i:integer);
Begin
...
End


 
Nox321   (2006-03-07 19:48) [3]

Спасибо. еще вопрос.
Как мне сначало скачать 5 стрниц одновременно, потом еще 5 и до тех пор пока список страниц не кончиться, я пытался сделать так
изменил кнопку button1, но все равно ничего не работает...:( он скачивает каждый раз разное число url в чем прикол?

procedure TForm1.Button1Click(Sender: TObject);
 var i,n,k,z: Integer;
       s:string;
begin
//очищаем listbox
 for z:=0 to ListBox1.Count do
                       Listbox1.Items.Delete(0);

//создаем каталог
 if Length(Edit1.Text) > 0 then
   if not DirectoryExists(Edit1.Text) then
     MkDir(Edit1.Text);

//открываем список url и скачиваем по 5 штук

 AssignFile(input, edit2.Text);
 reset(input);
 n:=0;
 k:=0;
 repeat
       n:=n+1;
       k:=k+1;
       readln(input,s);
       ListBox1.Items.Add(s);
    {   if (k=5) or (eof(input)) then
       begin
               for i := 0 to ListBox1.Count-1 do begin
                       with THTTPThread.Create(True) do begin //что вот тут делает прога? код не мой, но я так понял - идет создание для каждого URL в списке своего процесса. А как мне по 5 скачивать?  
                             URL := ListBox1.Items[i];
                             Resume;
                       end;
               end;

               k:=0;
               for z:=0 to ListBox1.Count do
                       Listbox1.Items.Delete(0);
               end;}
 until (eof(input));

  CloseFile(input);



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.049 c
2-1142181698
zaN0za
2006-03-12 19:41
2006.03.26
Сравнение типов


4-1136631724
Igor_thief
2006-01-07 14:02
2006.03.26
Системный курсор


1-1140939136
Mishenka
2006-02-26 10:32
2006.03.26
Просмотр Dos овских файлов в RichEdit


15-1140706709
ArtemESC
2006-02-23 17:58
2006.03.26
Чем смотреть swf?


5-1127855926
Proxytel
2005-09-28 01:18
2006.03.26
Как отловить клик над конкретной ячейкой StringGrid ?





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