Что такое Microsoft.NET?

  35790931     

Просмотр pass_parameter srf



Рисунок 12.13. Просмотр pass_parameter srf


Данный пример также демонстрирует, как с помощью второго приема связать функцию грамматического разбора с указанным выше методом управления заменой В соответствии с этим приемом имя метода фа мм этического разбора явно указывается с помощью параметра parse_f unc в атрибуте tag_name метода замены

// Обработчик, который принимает два параметра
[request_handler("pass_two_parameters")]
class C_pass_two_parameters_ATLServerAppHandler
{
protected: // защищенный
// пользовательская структура для того,
// чтобы сохранять преобразованные параметры
typedef struct
{
short index; // короткий индекс
char string[100]; // строка символов
} PARAMETER_DATA;
// метод синтаксического анализа преобразовывает
// два параметра из строки
HTTP_CODE parseTwoParametersFunction(
IlAtlMemMgr* pMemoryManager,
LPCSTR szArgumentData,
PARAMETER_DATA** ppArgument)
{
// распределить память для параметров,
// которые будут переданы
PARAMETER_DATA *pparams =
(PARAMETER_DATA *)pMemoryManager->Allocate(
// Распределить
sizeof(PARAMETERJDATA));
// установить параметры, которые будут
// переданы методу замен
char *szToken = strtok( // символ
(LPSTR)szArgumentData, ", "); // получить 1-й параметр
pparams->index = atoi(szToken); // сохранить 1-й параметр
szToken = strtok(NULL, "\""); // ПУСТОЙ УКАЗАТЕЛЬ -
// пропустить пробелы, символы табуляции и пустой строки
szToken = strtok(NULL, "\""); // ПУСТОЙ"УКАЗАТЕЛЬ -
// получить 2-й параметр
strcpy(pparams->string, szToken); // строка - сохранить
// 1-й параметр
// передать параметры обратно через ppArgument
ppArgument = &pparams;
return HTTP_SUCCESS;
}
// метод замены принимает два параметра в структуру
[ tag_name(name="HandleTwoParameters",
parse_func="parseTwoParametersFunction") ]
HTTP_CODE HandleTwoParameters(PARAMETER_DATA* pArgument)
{
m_HttpResponse
<< "First parameter was " // Первый параметр был
<< pArgument->index << "<p>" // индекс
<< "Second parameter was \"" // Второй параметр был
<< pArgument->stnng << "\"<p>" // строка
<< "The ASCII code for this index is "
// Код ASCII для этого индекса
<< pArgument->string[pArgument->index] ;
return HTTP_SUCCESS;
}



Содержание раздела