Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 24.11.2012, 19:58
Аватар для borockov
borockov borockov вне форума
Начинающий
 
Регистрация: 18.08.2012
Сообщения: 125
Репутация: 10
По умолчанию =)

Код:
PersistFile.Save(StringToOleStr('D:\'+pagecontrol1.Pages[j].Caption+'.html'), System.True);
По моему тут проблема в том что "pagecontrol1.pages[j].Caption" я обращаюсь ко всем вкладкам в том числе и к тем в которых нет открытых страниц, если так то как можно отследить вкладки к которым подгружены html?
Ответить с цитированием
  #17  
Старый 24.11.2012, 20:25
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от borockov
Код:
PersistFile.Save(StringToOleStr('D:\'+pagecontrol1.Pages[j].Caption+'.html'), System.True);
По моему тут проблема в том что "pagecontrol1.pages[j].Caption" я обращаюсь ко всем вкладкам в том числе и к тем в которых нет открытых страниц, если так то как можно отследить вкладки к которым подгружены html?
Код:
  if Assigned(PersistFile) then PersistFile.Save(Pointer(WideString('D:\'+pagecontrol1.Pages[j].Caption+'.html')), True);

Последний раз редактировалось poli-smen, 24.11.2012 в 20:28.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
borockov (24.11.2012)
  #18  
Старый 24.11.2012, 20:33
Аватар для borockov
borockov borockov вне форума
Начинающий
 
Регистрация: 18.08.2012
Сообщения: 125
Репутация: 10
По умолчанию =)

if Assigned(PersistFile) then PersistFile.Save(Pointer(WideString('D:\'+pagecont rol1.Pages[j].Caption+'.html')), True);
Всё работает на отлично! Пожалуйста если не трудно объясни этот кусочек кода=))
Ответить с цитированием
  #19  
Старый 24.11.2012, 20:48
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от borockov
if Assigned(PersistFile) then PersistFile.Save(Pointer(WideString('D:\'+pagecont rol1.Pages[j].Caption+'.html')), True);
Всё работает на отлично! Пожалуйста если не трудно объясни этот кусочек кода=))
Когда в браузер не загружена страница то его свойство Document равно nil (указатель вникуда) и всякие преобразования его сначала в "as IHTMLDocument2", а потом в "as IPersistFile" ничего не изменяют и переменная HTMLDocument и переменная PersistFile принимают тоже значение nil. И когда ты пытаешься обратиться к методам PersistFile, то фактически пытаешься прочитать данные из запрещённого места, за что Windows "наказывает" приложением исключением "Access Violation". А функция Assigned просто проверяет указатель на nil.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
borockov (24.11.2012)
  #20  
Старый 24.11.2012, 20:49
Аватар для borockov
borockov borockov вне форума
Начинающий
 
Регистрация: 18.08.2012
Сообщения: 125
Репутация: 10
По умолчанию

Разъяснил. Спасибо!
Ответить с цитированием
  #21  
Старый 24.11.2012, 21:06
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Ещё забыл добавить, что функцией StringToOleStr пользоваться не рекомендую, так как она не освобождает за собой память занятую под строку - получаются утечки памяти. Либо же освобождать память явно, вызывая SysFreeString.
Ответить с цитированием
  #22  
Старый 25.11.2012, 17:58
Аватар для borockov
borockov borockov вне форума
Начинающий
 
Регистрация: 18.08.2012
Сообщения: 125
Репутация: 10
По умолчанию )

Так как вопрос связан снова с webbrowser не стал создавать новую тему. Вопрос заключается в следующем: Браузер с вкладками (вкладки сделаны при помоши pageontrol, вкладок около 30 штук). Есть кнопка для парсинга ссылок находящихся на данной странице, таким образом я после парсинга получаю все ссылки находящиеся на данной странице. Теперь собственно сам вопрос, в каждой открытой странице есть ссылочка на pdf файл, а в ссылке присутствует тег
Код HTML:
target="_blank"
из за чего при нажатий на него ссылка открывается в новой вкладке, как сделать так что бы при нажатий на эту ссылку, файл сразу скачивался, а не открывался в новой вкладке?
Ответить с цитированием
  #23  
Старый 25.11.2012, 18:54
Аватар для borockov
borockov borockov вне форума
Начинающий
 
Регистрация: 18.08.2012
Сообщения: 125
Репутация: 10
По умолчанию )

Или как сохранить файл по такой ссылке? Например в IE можно сохранять так "ПКМ -> Сохранить объект"
Ответить с цитированием
  #24  
Старый 25.11.2012, 22:16
Аватар для borockov
borockov borockov вне форума
Начинающий
 
Регистрация: 18.08.2012
Сообщения: 125
Репутация: 10
По умолчанию

Меня сейчас посетила одна мысль, а можно ведь пропарсить страницу, и вырезать с помощью функций POS тег
Код HTML:
target_blank
Ответить с цитированием
  #25  
Старый 26.11.2012, 14:03
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от borockov
Меня сейчас посетила одна мысль, а можно ведь пропарсить страницу, и вырезать с помощью функций POS тег
Код HTML:
target_blank
А потом этот html опять нужно будет в браузер вгружать. По моему проще тогда просто пройтись по DOM объектам документа и прямо их и исправлять.
Вот попробовал - у меня так работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  doc: IHTMLDocument2;
  col: IHTMLElementCollection;
  a: IHTMLAnchorElement;
  i: Integer;
begin
  doc := WebBrowser1.Document as IHTMLDocument2;
  col := doc.links;
  for i := 0 to col.length - 1 do
  begin
    a := col.item(i, EmptyParam) as IHTMLAnchorElement;
    a.target := '';
  end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:07.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter