Главная страница
    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.042 c
8-1130080534
!Trinix
2005-10-23 19:15
2006.03.26
3D painting


15-1141204071
Kerk
2006-03-01 12:07
2006.03.26
Ask Yahoo


1-1140451254
Grol
2006-02-20 19:00
2006.03.26
Глюки с арифметическими вычислениями, провожу вычисления в Delphi


15-1141329491
Aven
2006-03-02 22:58
2006.03.26
Разработка сервер WoW на Дельфи


6-1134387710
Boo
2005-12-12 14:41
2006.03.26
Потоки в Indy / IdThreadComponent1





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