Главная страница
    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
3-11781
Manfred
2003-12-09 17:30
2004.01.05
FlushBuffers не помогает.


14-12141
panov
2003-12-11 19:18
2004.01.05
Спор спамеров с анитиспамерами.


14-12068
Думкин
2003-12-10 06:26
2004.01.05
С днем рождения! 10 декабря.


3-11780
Darrin
2003-12-10 11:02
2004.01.05
ADO + *.dbf


3-11779
Programmer
2003-12-08 11:49
2004.01.05
Как из ConnectionString в ADO вытащить путь к БД





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