Форумы Якутск Онлайн

Форумы Якутск Онлайн (https://forum.ya1.ru/index.php)
-   Учебная литература, полезные программы (https://forum.ya1.ru/forumdisplay.php?f=94)
-   -   кто знает дельфи, прошу помочь (https://forum.ya1.ru/showthread.php?t=25499)

LegeN 13.08.2008 16:47

кто знает дельфи, прошу помочь
 
хочу чтобы программа сохраняла исходник php страницы в формате txt. как сделать? нужно для одной своей программы :)

п.с. ссылка например вот так www.какой-то-сайт.ru/блабла/нужная_страница.php

Googleman 13.08.2008 17:01

для этого наверное все в ручняк придется делать. тоесть HTTP-заголовки попробуй.

LegeN 13.08.2008 18:11

вот нашол на Delphi Russian Knowledge Base, думаете прокатит? чо то ваще не понял, куда он сохраняет, как сохраняет и.т.д.




Как скачать любой URL используя стандартные настройки сети?

Начиная с Internet Explorer 3, Microsoft поддерживает очень полезные API, Wininet. Эти функции позволяют использовать все возможности IE, такие как настройки прокси, кэширование файлов и т.д.
Ниже приведён пример использования этих функций для скачивания файла с нужного URL. Это может быть любой доступный URL, ftp://, http://, gopher://, и т.д.
Более подробную информацию об этих функция можно посмотреть в MSDN - Win32 Internet API Functions.

Code:

function DownloadFile(const Url: string): string;
var
NetHandle: HINTERNET;
UrlHandle: HINTERNET;
Buffer: array[0..1024] of char;
BytesRead: cardinal;
begin
Result := '';
NetHandle := InternetOpen('Delphi 5.x', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(NetHandle) then
begin
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle) then
{ UrlHandle правильный? Начинаем загрузку }
begin
FillChar(Buffer, SizeOf(Buffer), 0);
repeat
Result := Result + Buffer;
FillChar(Buffer, SizeOf(Buffer), 0);
InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
until BytesRead = 0;
InternetCloseHandle(UrlHandle);
end
else
begin
{ UrlHandle неправильный. Генерируем исключительную ситуацию. }
raise Exception.CreateFmt('Cannot open URL %s', [url]);
end;
InternetCloseHandle(NetHandle);
end
else
{ NetHandle недопустимый. Генерируем исключительную ситуацию }
raise Exception.Create('Unable to initialize Wininet');
end;


©Drkb::03577 Взято из http://forum.sources.ru

LegeN 16.08.2008 15:27

ну ладно, сам нашол что делать, исходник php сохраняет через webbrowser, минусы, долго грузится ie6.0, зато код простой ;)

теперь еще одна проблема: как дельфи дать понять что загрузка страницы в webrowser окончена? delphi используется 7

Googleman 23.08.2008 19:17

попробуй использовать событийную модель виндоус. имхо самое простое.

LegeN 23.08.2008 19:18

и как это сделать? можеш подсказать? ;)

wchk 23.08.2008 21:07

если тег <html> закрылся значит страница кончилась.

LegeN 23.08.2008 21:47

не, не в том смысле. просто прога при нажатии на кнопку "вычислить" делает порядок действий:
1) в спрятанном webbrowser, открывает там нужную страницу,
2) |и нужно узнать тут что загрузка страницы закончилась|,
3) и сохраняет его исходник в txt или в спрятанный memo или в переменную какую нибудь,
4) потом ищет там данные в исходнике,
5) выводит на экран результат :).

самое обломное чтобы проверить что там чтото есть, если например соед. с инетом нету, там пусто окажется и программа выдаст ошибку, если не успеет ничего не загрузить, то тоже ошибка... если сделать через определенное время, например после нажатия на кнопку 10секунд, возможно тоже нету соед с инетом, или не успеет ничего загрузить (всякое может быть, нагруженный инет, медленная скорость, и т.п.)...

Googleman 24.08.2008 02:27

property OnDocumentComplete: TWebBrowserDocumentComplete;

создай обработчик для этошо события. после выполнения навигэйт в браузере и окончания загрузки оно сгенерируется. толкьо учти, если документ содержит много фреймов, то вызван обработчик будет для каждого фрейма.

LegeN 24.08.2008 09:53

спасибо. а блин, много там фреймов кажется... а пофигу, можно их и посчитать :))) сегодня вечером буду пытать и отпишусь о результатах!


Часовой пояс GMT +9, время: 08:38.

Powered by vBulletin® Version 3.6.3
Copyright ©2000 - 2024, Якутск-Online. Перевод: zCarot