Вверх ↑
Этот топик читают: Гость
Ответов: 485
Рейтинг: 86
#1: 2009-03-04 21:39:52 ЛС | профиль | цитата
Нужно собрать аналог функции rawurldecode() в PHP. Сейчас алгоритм такой:
Строка перебирается по одному символу. Если встречается знак %, то он удаляется, а следующие за ним два символа декодируются из HEX.
code_12017.txt
Имеется ощущение, что все это сильно громоздко. Помогите оптимизировать или заменить чем-нибудь...
карма: 0

0
файлы: 1code_12017.txt [3.3KB] [114]
Разработчик
Ответов: 26164
Рейтинг: 2127
#2: 2009-03-04 22:24:16 ЛС | профиль | цитата
Проще, уже некуда


Add(MainForm,1549785,245,238)
{
Width=371
Height=171
Position=1
link(onCreate,9667116:doDecode,[])
}
Add(MultiElementEx,9667116,301,252)
{
link(onDecoded,3878772:doAdd,[])
link(String,7735372:Text,[])
}
BEGIN_SDK
Add(EditMultiEx,14841541,21,21)
{
WorkCount=#8:doDecode|
EventCount=#9:onDecoded|
DataCount=#6:String|
Width=314
Height=249
link(doDecode,6745312:doData,[(24,27)(24,48)])
}
Add(Convertor,4633013,210,91)
{
Mode=6
link(onResult,15456152:doStrCat,[])
}
Add(For,13814996,119,91)
{
End=255
link(onEvent,16562525:doEvent1,[])
link(onStop,65777:doData,[(161,104)(161,230)])
}
Add(Memory,2876238,252,42)
{
Default=String()
Point(Data)
}
Add(Convertor,10066133,210,133)
{
Mode=4
link(onResult,16125483:doValue,[])
}
Add(Memory,16125483,266,133)
{
}
Add(Hub,16562525,168,91)
{
OutCount=3
link(onEvent1,4633013:doConvert,[])
link(onEvent2,10066133:doConvert,[(196,104)(196,139)])
link(onEvent3,1836011:doReplace,[(190,111)(190,188)])
}
Add(Replace,1836011,252,182)
{
Point(CurentStr)
link(onReplace,6006573:doWork1,[(304,188)(304,27)(242,27)])
link(Str,2876238:Value,[])
link(Sub_str,15456152:Result,[])
link(Dest,16125483:Value,[])
}
Add(StrCat,15456152,259,91)
{
Str1="%"
}
Add(Hub,2944525,84,42)
{
link(onEvent1,6006573:doWork2,[])
link(onEvent2,13814996:doFor,[(108,55)(108,97)])
}
Add(HubEx,6006573,238,35)
{
link(onEvent,2876238:doValue,[])
}
Add(DoData,65777,252,224)
{
link(onEventData,14841541:onDecoded,[(311,230)(311,27)])
link(Data,1836011:CurentStr,[])
}
Add(DoData,6745312,35,42)
{
link(onEventData,2944525:doEvent1,[])
link(Data,14841541:String,[(41,25)(27,25)])
}
END_SDK
Add(Edit,7735372,301,203)
{
Left=10
Top=10
Width=345
Text="%F2%E5%F1%F2%20test%20%F2%E5%F1%F2%200123456789"
}
Add(ListBox,3878772,357,252)
{
Left=10
Top=35
Width=345
Height=95
}

карма: 22

1
Голосовали:filyaxxxcom
Ответов: 1161
Рейтинг: 160
#3: 2009-03-04 22:27:39 ЛС | профиль | цитата
еще один вариант
code_12020.txt
filyaxxxcom, кстати функция rawurldecode() оставит строку "%RR" такой же, а твой мультик удаляет ее
карма: 0

1
файлы: 1code_12020.txt [2.1KB] [100]
Голосовали:filyaxxxcom
Разработчик
Ответов: 26164
Рейтинг: 2127
#4: 2009-03-04 22:36:19 ЛС | профиль | цитата
LainX, схема, в общем, повторяет мою, значит мысли двигались в одном направлении, но зачем же Stream2Hex применять, но и компоненты лишние есть, да и читабельность схемы хромает
карма: 22

0
Ответов: 485
Рейтинг: 86
#5: 2009-03-04 23:00:05 ЛС | профиль | цитата
Спасибо.
LainX писал(а):
"%RR"
А это что?
карма: 0

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)