Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
3-11789
Апач
2003-12-09 13:25
2004.01.05
Как IBTable взять запись на редактирование


8-12008
xn0bys
2003-08-29 08:23
2004.01.05
Как создать на клиентской части формы БИТМАП (НЕ канву).


3-11840
Вольный Стрелок
2003-12-09 18:06
2004.01.05
Сравнение ADO и dbExpress


3-11808
konst_bsh
2003-12-08 17:52
2004.01.05
Поиск по индексированному полю.


4-12216
ZEE
2003-11-05 12:31
2004.01.05
TStringList vs DynamicArray