Получить информацию о коде завершения
Синтаксис
L_LONG GetError ( L_CHAR *, /* буфер для имени модуля, в котором произошла ошибка */ L_ULONG *, /* длина буфера для имени модуля */ L_CHAR *, /* буфер для текста кода завершения */ L_ULONG *, /* длина буфера для текста кода завершения */ L_LONG *, /* буфер для кода завершения LinAPI */ L_LONG *, /* буфер для кода завершения СУБД ЛИНТЕР */ L_LONG *); /* буфер для кода завершения ОС */
Описание
Метод извлекает ошибку из буфера ошибок. Для аргументов метода с типом L_ULONG* требуется передать указатели на переменные, в которых хранятся размер буфера для получения имени модуля и размер буфера для получения текста сообщения соответственно. В эти же переменные метод запишет реальные размеры строк с именем модуля и текстом сообщения (в том случае, если буфер для строк окажется недостаточным, строки будут усечены).
Прототип LinAPI
Отсутствует.
Примеры
-
Пример функции обработки кода завершения:
static void processing_error(linConnection *pConnect, L_LONG ret_cod, L_CHAR *message) { L_CHAR sModuleName[64], sErrorText[1024]; L_ULONG ulModuleNameLen = sizeof(sModuleName), ulErrorTextLen = sizeof(sErrorText); L_LONG lLinApi, lLinter, lSystem, lRet; printf("Return code = %ld (%s)\n", ret_cod, message); while (pConnect- >GetErrorsCount()) { if ((lRet = pConnect- >GetError(sModuleName, &ulModuleNameLen, sErrorText, &ulErrorTextLen, &lLinApi, &lLinter, &lSystem)) == LINAPI_SUCCESS) printf("%s: '%s'\n", sModuleName, sErrorText); else printf("GetError returned code #%ld\n", lRet); } }
-
Пример вызова функции обработки кода завершения:
linConnection *pConnect = new linConnection; L_LONG lRet; if ((lRet = pConnect- >Connect("SYSTEM", 0, "MANAGER8", 0, NULL, mAutocommit)) != LINAPI_SUCCESS) processing_error(pConnect, lRet, "ERROR Connect");