Главная страница
    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.054 c
15-1178884442
Сатир
2007-05-11 15:54
2007.06.10
Bluetooth Dongle v.2.0


15-1179304020
Sergionio
2007-05-16 12:27
2007.06.10
таблица после insert


2-1179840923
Sonia
2007-05-22 17:35
2007.06.10
Сделать компоненты формы "прозрачными"


2-1179743482
wazaXXX
2007-05-21 14:31
2007.06.10
Как прописать .reg файл в регистр ?


1-1176796510
newnewnew
2007-04-17 11:55
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский