Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];

Вниз

русский язык в Html и Delphi   Найти похожие ветки 

 
Accel   (2007-05-17 14:12) [0]

Добрый день!

может замечали, если в яндексе ищем слово на английском, например, 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 в читаемый русский язык.
Заранее спасибо!!!


 
Megabyte ©   (2007-05-17 14:18) [1]

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


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

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


 
Megabyte ©   (2007-05-17 15:59) [3]

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

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


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

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


 
Megabyte ©   (2007-05-17 16:32) [5]

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


 
Accel   (2007-05-17 17:17) [6]

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

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;


 
G_M_S ©   (2007-05-17 17:47) [7]

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

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

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

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

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


 
Megabyte ©   (2007-05-17 17:50) [8]


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

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


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

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


 
Anatoly Podgoretsky ©   (2007-05-17 18:44) [10]

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

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


 
G_M_S ©   (2007-05-17 19:19) [11]


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

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


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

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



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

Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
5-1155109571
Vaitek__
2006-08-09 11:46
2007.06.10
Прозрачный TCustomPanel


15-1179214537
Флудер :)
2007-05-15 11:35
2007.06.10
Нужна анимированная картинка книги


15-1179233110
P
2007-05-15 16:45
2007.06.10
Авторское право на исходный текст программы из книги.


1-1171461249
Пётр_К
2007-02-14 16:54
2007.06.10
TShape drag


2-1179416636
Kostafey
2007-05-17 19:43
2007.06.10
Запрет на редактирование/удаление записи по значению





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский