Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

русский язык в Html и Delphi [D7, XP]


Accel ©   (2007-05-17 14:12:00) 

Добрый день!

может замечали, если в яндексе ищем слово на английском, например, oleg, то получаем:
http://www.yandex.ru/yandsearch?text=oleg
а если ищём олег - по-русски, то получается:
http://www.yandex.ru/yandsearch?text=%EE%EB%E5%E3

Тоесть %EE%EB%E5%E3 = олег.

Вопрос в том, как при помощи Delphi преобразовывать %EE%EB%E5%E3 в читаемый русский язык.
Заранее спасибо!!!


Accel   (2007-05-17 22:27:00) [1]

Спасибо всем за помощь!!!


G_M_S   (2007-05-17 19:19:00) [2]


> Не мешайте человеку учиться :)

Как раз надо учиться использовать готовые наработки - иначе при написании ПО легко погрязнуть в изобретении велосипеда...


Anatoly Podgoretsky   (2007-05-17 18:44:00) [3]

> Accel  (17.05.2007 18:04:09)  [9]

Тогда тебе нужен Winsock API


Accel   (2007-05-17 18:04:00) [4]

Про indy интересно, спасибо!
Но я пишу диплом и поэтому стараюсь всё сам делать, чем нагрузить кучу готовых компонентов, накидать на форму и радоваться.


Megabyte   (2007-05-17 17:50:00) [5]


> G_M_S ©  (17.05.07 17:47) [7]

Не мешайте человеку учиться :)


G_M_S   (2007-05-17 17:47:00) [6]

Господа, все уже сделано до вас.

Смотрите в сторону Indy. Подключаете юнит IdURI и пишете такое:

s := TidURI.ParamsEncode('Олег');

получаете в переменную "s" соотв. строку. Обратно там же ParamsDecode.

ЗЫ: у меня TD 2006, в Дельфи 6/7, как мне помнится, была старая Инди, где отдельным компонентом кодер URI был на панельке Indy Misc, хотя я его могу путать с другими кодерами/декодерами, коих там ДОФИГА, попрошу заметить.


Accel   (2007-05-17 17:17:00) [7]

Всё получилось:

procedure TForm1.Button1Click(Sender: TObject);
var s,res:String;
begin
 s:=Edit1.Text; //  исходный 16-ричный код от браузера

 while pos('%',s)>0 do delete(s, pos('%',s),1); // удаляем все разделительные знаки '%'
 while pos('+',s)>0 do // заменяем знаки '+' в строке на '20' - пробел в ascii
 begin
 insert('20',s,pos('+',s));
 delete(s, pos('+',s),1);
 end;

 SetLength(res,round(Length(s)/2)); // устанавливаем длину буфера res равной половине от исходной последовательности ascii (т.к. там 2 символа кодируют один)
 HexToBin(PChar(s),PChar(res),Length(s)); // преобразуем 16-ричную последовательность в обычный текст
 Edit2.Text:=res;  // выводим результаты
end;


Megabyte   (2007-05-17 16:32:00) [8]

Функция chr - по коду выдает символ! Только не забудь, что у тебя 16-тиричный код.


Accel   (2007-05-17 16:10:00) [9]

Окей, если я правильно понял, сопоставлять 16-ричные коды из этой строки таблице кодов ASCII, принимая, как разделитель кодов символ '%'
Это ясно, вот как сопоставлять коды - в этом вопрос?
написать
EE = о
EB = л ... и т.д.? или есть стандартная функция для этого?


Megabyte   (2007-05-17 15:59:00) [10]

Парсить - разбирать
ASCII-коды - код символа согласно ASCII

Если и сейчас не понял, то забей на эту задачу...


Accel   (2007-05-17 15:43:00) [11]

эээ, а по-русски.


Megabyte   (2007-05-17 14:18:00) [12]

Парсишь строку парметров: % - разделитель символов и сами ASCII-коды в 16-чной системе счисления


Наверх

Титульная страница Поиск, карта сайта Написать письмо