Просмотр полной версии : кто знает дельфи, прошу помочь
хочу чтобы программа сохраняла исходник php страницы в формате txt. как сделать? нужно для одной своей программы :)
п.с. ссылка например вот так www.какой-то-сайт.ru/блабла/нужная_страница.php
Googleman
13.08.2008, 17:01
для этого наверное все в ручняк придется делать. тоесть HTTP-заголовки попробуй.
вот нашол на 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
ну ладно, сам нашол что делать, исходник php сохраняет через webbrowser, минусы, долго грузится ie6.0, зато код простой ;)
теперь еще одна проблема: как дельфи дать понять что загрузка страницы в webrowser окончена? delphi используется 7
Googleman
23.08.2008, 19:17
попробуй использовать событийную модель виндоус. имхо самое простое.
и как это сделать? можеш подсказать? ;)
если тег <html> закрылся значит страница кончилась.
не, не в том смысле. просто прога при нажатии на кнопку "вычислить" делает порядок действий:
1) в спрятанном webbrowser, открывает там нужную страницу,
2) |и нужно узнать тут что загрузка страницы закончилась|,
3) и сохраняет его исходник в txt или в спрятанный memo или в переменную какую нибудь,
4) потом ищет там данные в исходнике,
5) выводит на экран результат :).
самое обломное чтобы проверить что там чтото есть, если например соед. с инетом нету, там пусто окажется и программа выдаст ошибку, если не успеет ничего не загрузить, то тоже ошибка... если сделать через определенное время, например после нажатия на кнопку 10секунд, возможно тоже нету соед с инетом, или не успеет ничего загрузить (всякое может быть, нагруженный инет, медленная скорость, и т.п.)...
Googleman
24.08.2008, 02:27
property OnDocumentComplete: TWebBrowserDocumentComplete;
создай обработчик для этошо события. после выполнения навигэйт в браузере и окончания загрузки оно сгенерируется. толкьо учти, если документ содержит много фреймов, то вызван обработчик будет для каждого фрейма.
спасибо. а блин, много там фреймов кажется... а пофигу, можно их и посчитать :))) сегодня вечером буду пытать и отпишусь о результатах!
пытал пытал, ничо не получилось с этим %(. решил подругому сделать, и почти получился желаемый результат, через try и except ;) если не успеет загрузить страницу в течение 5 сек, то прога выдает, "повторите попытку позднее" :) еще сделаю чтоб настраивалась эта опция, типа увеличить время в настройках или добавить "повторить попытку сейчас".
.
.
.
.
АП
хочу чтобы программа сохраняла исходник php страницы в формате txt. как сделать? нужно для одной своей программы :)
п.с. ссылка например вот так www.какой-то-сайт.ru/блабла/нужная_страница.php
Почем иммено для страницы с расширением *.php? Всеравно будь это *.php или *.html данные однинаковы.
vBulletin® v3.6.3, Copyright ©2000-2024, Якутск-Online. Перевод: zCarot