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

Вниз

Есть ли готовая функция для преобразования строки к виду   Найти похожие ветки 

 
SergP   (2003-12-19 21:08) [0]

где каждый символ строки-параметра будет в результате функции представлен в ввиде трех символов: % и код этого символа в шестнадцатеричном представлении? (Латинские символы преобразовывать не обязательно).
Интересует есть ли в Дельфи встроенная функция или API?
Если есть то какая?


 
panov   (2003-12-19 21:14) [1]

Встроенных нет.
Но преобразование не проблема, как я понимаю... 5-7 строк кода.


 
panov   (2003-12-19 21:15) [2]

Достаточно цикла и функций Ord и IntToHex.


 
SergP   (2003-12-19 21:28) [3]

Как-то не подумал про IntToHex...
А без не использования IntToHex я оценил написание такой функции примерно 30-40 строчками кода, поэтому и захотелось чего-то встроенного...
Спасибо что напомнили о IntToHex.


 
SergP   (2003-12-19 21:39) [4]


> Но преобразование не проблема, как я понимаю... 5-7 строк
> кода.


Ну Вы в точности угадали...

function hexcodestring(a:string):string;
var i:integer;
begin
result:="";
for i:=1 to length(a) do result:=result+"%"+IntToHex(ORD(a[i]),2);
end;

Получилось 6 строк. :-)


 
panov   (2003-12-19 21:40) [5]

Примерно так:

function CodeTo(const aSrc: String): String;
var
i: Integer;
s: String;
begin
SetLength(Result,Length(aSrc)*3);
for i := 1 to Length(aSrc) do
begin
Result[(i-1)*3+1] := "%";
s := IntToHex(Ord(aSrc[i]),2);
Move(s[1],Result[(i-1)*3+2],2);
end;
end;


 
panov   (2003-12-19 21:41) [6]

У Вас короче, а у меня эффективнее получилось-)

Но все равно - 7 строк-)


 
Dred2k   (2003-12-19 21:47) [7]

Прога вообще одна строка... ;)


 
SergP   (2003-12-19 21:48) [8]


> У Вас короче, а у меня эффективнее получилось-)


А подробнее о эффективности можно? Чем оно эффективнее?
Тем что длина result определяется заранее?


 
Anatoly Podgoretsky   (2003-12-19 21:54) [9]

SergP © (19.12.03 21:48) [8]
Да и на больших строках это будет очень заметно, а так как это применимо к веб спрвисам, то и существенна.


 
SergP   (2003-12-19 21:59) [10]


> Anatoly Podgoretsky © (19.12.03 21:54) [9]
> SergP © (19.12.03 21:48) [8]
> Да и на больших строках это будет очень заметно, а так как
> это применимо к веб спрвисам, то и существенна.


Понятно... Просто это мне нужно для преобразования строки чтобы ее отправить в POST запросе c помощью NMHTTP, так как в строке могут всякие разные символы присутствовать.

Но вот что делать в случае если я захочу перекодировать не все символы (например латинские оставить как есть)? Тогда ведь не получится определить длину result один раз, так как это невозможно заранее знать...


 
Anatoly Podgoretsky   (2003-12-19 22:41) [11]

SergP © (19.12.03 21:59) [10]
определишь два раза, один х*3, потом точно


 
Ломброзо   (2003-12-20 01:47) [12]

UrlEscape/UrlUnescape в Shlwapi.dll



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

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

Наверх





Память: 0.46 MB
Время: 0.011 c
14-12159
sad
2003-12-05 10:07
2004.01.05
Иероглиф светлой печали


14-12135
Denis
2003-12-04 16:08
2004.01.05
---|Ветка была без названия|---


14-12104
Шишкин Илья
2003-12-15 21:22
2004.01.05
Вопрос по DOS


14-12081
Карелин Артем
2003-12-15 16:00
2004.01.05
Kylix 2 & FreeBsd.


14-12101
Гарри Поттер
2003-12-14 12:40
2004.01.05
Подскажите хороший файервол?





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