Форум: "Основная";
Текущий архив: 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