Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

Поиск строки в поисковом сайте через Internet Explorer   Найти похожие ветки 

 
mefodiy   (2005-09-27 10:38) [0]

При создании формы открываю нужный мне интернет сайт

var IEApp: OleVariant;
    WinHanlde: HWnd;
...............................
procedure OpenIE(aURL: string);
 var WinHanlde: HWnd;
begin
 if (VarIsEmpty(IEApp)) then
   begin
     IEApp         := CreateOleObject("InternetExplorer.Application");
     IEApp.Visible := True;
     IEApp.Navigate(aURL);
   end
 else
   begin
     WinHanlde := FindWindow("IEFrame", nil);
     if (0 <> WinHanlde) then
       begin
         IEApp.Navigate(aURL);
         SetForegroundWindow(WinHanlde);
       end
     else
       ShowMessage("Can""t open IEApp !");
   end;
end;
..........................................
OpenIE("http://www.yandex.ru");
..........................................
Нужно, чтобы по нажатию кнопки в моей форме на поисковом сайте yandex.ru начался поиск строки из моего TEdit.
Возможно ли такое и, если да, то как это сделать?
Спасибо.


 
dmitry501 ©   (2005-09-27 10:52) [1]

Угу, вызывай вот так
OpenIE("http://www.yandex.ru/yandsearch?rpt=rad&text="+Edit1.text+");


 
mefodiy   (2005-09-27 13:10) [2]

Все работает, только нормальный в Edit1 текст в поисковике превращается в аброкадабру.
Не помогает и преобразование

OpenIE("http://www.yandex.ru/yandsearch?rpt=rad&text="+StringToWideString(Edit1.Text,1251))

где функция имеет вид

function StringToWideString(const s: AnsiString; codePage: Word): WideString;
 var l: integer;
begin
 if s = "" then
   Result := ""
 else
   begin
     l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), -1, nil, 0);
     SetLength(Result, l - 1);
     if l > 1 then
       MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]),
                           -1, PWideChar(@Result[1]), l - 1);
   end;
end;


 
dmitry501 ©   (2005-09-28 05:37) [3]

Попробуй использовать функцию HTMLEncode()
которая преобразует русские буквы и служебные символы в кодировку, используемую в HTML


 
mefodiy   (2005-09-28 09:24) [4]

HTMLEncode() не помогла


 
dmitry501 ©   (2005-09-28 09:26) [5]

А подробнее? Чему равна aURL? Какая кодировка стоит у IE по умолчанию?


 
mefodiy   (2005-09-28 10:31) [6]

Что имеешь в виду под aURL?
Кодировку IE насколько я понимаю смотрим в View-->Ecoding.
Там стоит Cirillic(WIndows).


 
dmitry501 ©   (2005-09-28 10:40) [7]

mefodiy   (28.09.05 10:31) [6]
>Что имеешь в виду под aURL?
Переменная из [0]
и еще, стоит ли параметр "отправлять url как utf-8"?


 
mefodiy   (2005-09-28 11:27) [8]

>Переменная из [0] Опять не дошло, поподробнее, пожалйста
>и еще, стоит ли параметр "отправлять url как utf-8"? да стоит


 
dmitry501 ©   (2005-09-28 11:39) [9]

mefodiy   (28.09.05 11:27) [8]
прочти свой самый первый вопрос, и увидишь переменную aURL, которыя передается в процедуру OpenIE. На ней поставь брекпоинт и посмотри чему она равна!


 
mefodiy   (2005-09-28 12:12) [10]

Так ты же мне его сам написал

"http://www.yandex.ru/yandsearch?rpt=rad&text="+Edit1.text

Кстати, если даже вместо Edit1.text написать в кириллице любое слово (в теле программы), то на брекпоинте все номально читается. Абракадабра получается при передаче URL в IE.


 
mefodiy   (2005-09-28 14:53) [11]

Проблема решилась заменой

 IEApp.Navigate(aURL);

на

 IEApp.Navigate(StringToWideString(aURL,1251));

т.е. преобразование в юникод надо было делать не при вызове функции

OpenIE("http://www.yandex.ru/yandsearch?rpt=rad&text="+Edit1.Text)

а в самом теле функции.



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
14-1128254007
Piter
2005-10-02 15:53
2005.10.23
Подскажите адреса серверов eMule


6-1120210369
Aleksandr.
2005-07-01 13:32
2005.10.23
Что за проблемы с Indy в dll?


1-1128184001
igor456
2005-10-01 20:26
2005.10.23
Прочитать файл


4-1124482768
ronyn
2005-08-20 00:19
2005.10.23
Label и шрифты по-русски...


3-1126260681
Monk
2005-09-09 14:11
2005.10.23
Компонент DBLookupListBox