Главная страница
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.035 c
9-1118119264
!Trinix
2005-06-07 08:41
2005.10.23
Оптимизация glscene


14-1127820717
Del_programmer
2005-09-27 15:31
2005.10.23
Builder X - за и против!


9-1118134173
Le(x)
2005-06-07 12:49
2005.10.23
Помогите дописать игру!


14-1128154494
Andy BitOff
2005-10-01 12:14
2005.10.23
Порты 1010-1013


14-1128055512
CHES
2005-09-30 08:45
2005.10.23
Примеры "нестандартных" решений.