Главная страница
    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.048 c
1-1176292741
MVA`
2007-04-11 15:59
2007.06.10
События на кнопках


1-1176365726
OlegM
2007-04-12 12:15
2007.06.10
Изменить значение в xml документе через TXMLDocument


1-1176700809
bss
2007-04-16 09:20
2007.06.10
Как установить свой фонт для контролов при Enabled=false


2-1179807221
Руслан56
2007-05-22 08:13
2007.06.10
Как составить запрос


1-1176820057
DelphiLexx
2007-04-17 18:27
2007.06.10
DrawText





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский