Форум: "Начинающим";
Текущий архив: 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