Сетевые технологии. Баканов В.М. - 21 стр.

UptoLike

Составители: 

- 21 -
void DecodeStr(char *sString)
{ int src, dst;
char ch;
for(src=0,dst=0; sString[src]; src++,dst++) // цикл по строке
{
ch = sString[src]; // получаем очередной символ перекодируемой строки
ch = (ch == '+') ? ' ' : ch; // заменяем символ ‘+’ на пробел
sString[dst] = ch; // сохраняем результат
// обработка шестнадцатеричных кодов вида %хх
if(ch == '%')
{
sString[dst] = DecodeHex(&sString[src + 1]); // преобразуем %00 в код символа
src += 2;
} // конец IF ch…
} // конец FOR src…
sString[dst] = '\0'; // закрываем строку нулем
} // конец функции DecodeStr
//----------------------------------------------------------------------------
// функция DecodeHex - раскодирование строки %хх
//
char DecodeHex(char *str)
{ char ch;
// обрабатываем старший разряд
if(str[0] >= 'A') // здесь и далее 'А' - латиница !!!
ch = ((str[0] & 0xdf) - 'A') + 10;
else
ch = str[0] - '0';
ch <<= 4; // сдвигаем его влево на 4 бита
if(str[1] >= 'A') // oбрабатываем младший разряд и складываем его со старшим
ch += ((str[1] & 0xdf) - 'A') + 10;
else
ch += str[1] - '0';
return (ch); // возвращаем результат перекодировки
} // конец функции DecodeHex
//----------------------------------------------------------------------------
Компонентная С-функция MainFormCreate создана с помощью Ob-
ject Inspector’а как вызываемая при событии
MainFormCreate (создание един-
ственной в приложении формы MainForm), при этом в управляющем файле
CGI_CPP.CPP строка
Application->Run(); закомментирована (CGI-приложение
не требует окна). Функции
DecodeStr и DecodeHex служат для (вышеописан-
ного) декодирования символов в получаемой от броузера строке.
void DecodeStr(char *sString)
{ int src, dst;
  char ch;
  for(src=0,dst=0; sString[src]; src++,dst++) // цикл по строке
   {
    ch = sString[src]; // получаем очередной символ перекодируемой строки
    ch = (ch == '+') ? ' ' : ch; // заменяем символ ‘+’ на пробел
    sString[dst] = ch; // сохраняем результат
// обработка шестнадцатеричных кодов вида %хх
    if(ch == '%')
     {
      sString[dst] = DecodeHex(&sString[src + 1]); // преобразуем %00 в код символа
      src += 2;
     } // конец IF ch…
   } // конец FOR src…
  sString[dst] = '\0'; // закрываем строку нулем
} // конец функции DecodeStr
//----------------------------------------------------------------------------

// функция DecodeHex - раскодирование строки %хх
//
char DecodeHex(char *str)
{ char ch;
// обрабатываем старший разряд
   if(str[0] >= 'A') // здесь и далее 'А' - латиница !!!
    ch = ((str[0] & 0xdf) - 'A') + 10;
   else
    ch = str[0] - '0';
   ch <<= 4; // сдвигаем его влево на 4 бита
   if(str[1] >= 'A') // oбрабатываем младший разряд и складываем его со старшим
    ch += ((str[1] & 0xdf) - 'A') + 10;
   else
    ch += str[1] - '0';
   return (ch); // возвращаем результат перекодировки
} // конец функции DecodeHex
//----------------------------------------------------------------------------

    Компонентная С-функция MainFormCreate создана с помощью Ob-
ject Inspector’а как вызываемая при событии MainFormCreate (создание един-
ственной в приложении формы MainForm), при этом в управляющем файле
CGI_CPP.CPP строка Application->Run(); закомментирована (CGI-приложение
не требует окна). Функции DecodeStr и DecodeHex служат для (вышеописан-
ного) декодирования символов в получаемой от броузера строке.




                                        - 21 -