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

Вниз

HexToStr   Найти похожие ветки 

 
Blackweber   (2002-08-07 20:05) [0]

Привет.
У меня проблема преобразования строки запроса, при использовании метода GET.Это например когда в Яндексе после адреса к поисковому скрипту идет ?query=erfjnerkj. Так вот русские буквы и спец.символы кодируются в шестнадцатеричной системе, т.е. русская "б" это %E1.
Может кто-нибудь ответит на вопрос: если есть ф-ция IntToHex, почему нет ф-ции HexToInt?
Я нашел ф-цию StrtoIntDef, но как-то странно она(или я) работает.
Устав от поисков я использовал следующее:
function HexToStr(s:string):string;
var p:integer; c:byte;
const hex="0123456789ABCDEF";
begin
if s <> "" then begin
p := 1;
while p <= Length(s) do begin
if s[p] = "+" then s[p] := " "
else
if s[p] = "%" then
begin
c := 0;
if (p + 1) <= Length(s) then c := Pos(Upcase(s[p + 1]), HEX) shl 4;
if (p + 2) <= Length(s) then c := c or Pos(Upcase(s[p + 2]), HEX);
System.Delete(s, p + 1, 2);
if (c<>239)or(c<>207)then s[p] := char(c-17);{ else
case c of
239 : s[p]:=char(239); //////
207 : s[p]:=char(207); //////
end;}
end;
Inc(p);
end;
result:=s;
end;

Комментируемая часть у меня используется для поправки:
Все буквы за исключением "п"(char(239)) и "П"(char(207)) декодируются нормально, а эти в "Я"(char(223)) и "i"(char(191)).
Вопрос: Почему?


 
SuperIgor   (2002-08-07 21:53) [1]

Нашел тут алгоритм HEX>>>Int
Может поможет.

№1
****
var

i : integer
s : string;
begin

s := "$" + ThatHexString;
i := StrToInt(a);
end;
****

№2
****
CONST HEX : ARRAY["A".."F"] OF INTEGER = (10,11,12,13,14,15);
VAR str : String;

Int,
i : integer;
BEGIN

READLN(str);
Int := 0;
FOR i := 1 TO Length(str) DO
IF str[i] < "A" THEN Int := Int * 16 + ORD(str[i]) - 48
ELSE Int := Int * 16 + HEX[str[i]];
WRITELN(Int);
READLN;
END.
****


 
blackweber   (2002-08-07 23:43) [2]

что-то я не совсем понял насчет N1. Это вообще к чему?
Второй щас попробую, но ПАЛЮБОМУ спасибо.


 
Anatoly Podgoretsky   (2002-08-07 23:48) [3]

Это плохо, что ты не понял, а ты тогда просто попробуй


 
blackweber   (2002-08-08 02:49) [4]

>N1
Я бы наверно понял если бы не ThatHexString и a.
>Anatoly Podgoretsky
А насчет моей ф-ции ничего сказать неможете?


 
Anatoly Podgoretsky   (2002-08-08 08:00) [5]

Вот тебе насчет твоей функции

SuperIgor © (07.08.02 21:53)
s := "$" + ThatHexString;
i := StrToInt(a);

или проще StrToInt("$" + HexString);


 
blackweber   (2002-08-10 00:20) [6]

Все понял, большое спасибо.



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

Текущий архив: 2002.08.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
3-70995
******
2002-07-30 15:08
2002.08.22
помогите с DBLookUpComboBox


7-71407
МИФИст
2002-06-08 19:33
2002.08.22
ASCII


3-71044
nikolo
2002-08-01 14:27
2002.08.22
Как объявить параметры в TADOQuery?


1-71102
Uran
2002-08-12 14:25
2002.08.22
Защита от копирования дисков


1-71120
Сережа
2002-08-05 11:05
2002.08.22
Запуск программы из значка или из значка в трее