Getlasterror c коды ошибок

Ошибки времени выполнения

GetLastError() – функция, возвращающая код последней ошибки, которая хранится в предопределенной переменной _LastError. Значение этой переменной можно сбросить в ноль функцией ResetLastError().

Операция выполнена успешно

Неожиданная внутренняя ошибка

Ошибочный параметр при внутреннем вызове функции клиентского терминала

Ошибочный параметр при вызове системной функции

Недостаточно памяти для выполнения системной функции

Структура содержит объекты строк и/или динамических массивов и/или структуры с такими объектами и/или классы

Массив неподходящего типа, неподходящего размера или испорченный объект динамического массива

Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива

Недостаточно памяти для перераспределения строки

Неправильное значение даты и/или времени

Общее число элементов в массиве не может превышать 2147483647

Ошибочный тип указателя

Обработка ошибок — Функция GetLastError()

Системная функция не разрешена для вызова

Совпадение имени динамического и статического ресурсов

Ресурс с таким именем в EX5 не найден

Неподдерживаемый тип ресурса или размер более 16 MB

Имя ресурса превышает 63 символа

При вычислении математической функции произошло переполнение

Выход за дату окончания тестирования после вызова Sleep()

Тестирование было прекращено принудительно извне. Например, прервана оптимизацию, или закрыто окно визуального тестирования, или остановлен агент тестирования

Ошибочный идентификатор графика

График не отвечает

График не найден

У графика нет эксперта, который мог бы обработать событие

Ошибка открытия графика

Ошибка при изменении для графика символа и периода

Ошибочное значение параметра для функции по работе с графиком

Ошибка при создании таймера

Ошибочный идентификатор свойства графика

Ошибка при создании скриншота

Ошибка навигации по графику

Ошибка при применении шаблона

Подокно, содержащее указанный индикатор, не найдено

Ошибка при добавлении индикатора на график

Ошибка при удалении индикатора с графика

Индикатор не найден на указанном графике

Ошибка при работе с графическим объектом

Графический объект не найден

Ошибочный идентификатор свойства графического объекта

Невозможно получить дату, соответствующую значению

Невозможно получить значение, соответствующее дате

Символ не выбран в MarketWatch

Ошибочный идентификатор свойства символа

Время последнего тика неизвестно (тиков не было)

Ошибка добавления или удаления символа в MarketWatch

Доступ к истории

Запрашиваемая история не найдена

Ошибочный идентификатор свойства истории

Превышен таймаут при запросе истории

Количество запрашиваемых баров ограничено настройками терминала

Множество ошибок при загрузке истории

Принимающий массив слишком мал чтобы вместить все запрошенные данные

getlasterror

Глобальные переменные терминала

Глобальная переменная клиентского терминала не найдена

Глобальная переменная клиентского терминала с таким именем уже существует

Не было модификаций глобальных переменных

Не удалось открыть и прочитать файл со значениями глобальных переменных

Не удалось записать файл со значениями глобальных переменных

Не удалось отправить письмо

Не удалось воспроизвести звук

Ошибочный идентификатор свойства программы

Ошибочный идентификатор свойства терминала

Не удалось отправить файл по ftp

Не удалось отправить уведомление

Неверный параметр для отправки уведомления – в функцию SendNotification() передали пустую строку или NULL

Неверные настройки уведомлений в терминале (не указан ID или не выставлено разрешение)

Слишком частая отправка уведомлений

Не указан FTP сервер

Не указан FTP логин

Не найден файл в директории MQL5Files для отправки на FTP сервер

Ошибка при подключении к FTP серверу

На FTP сервере не найдена директория для выгрузки файла

Подключение к FTP серверу закрыто

Буферы пользовательских индикаторов

Недостаточно памяти для распределения индикаторных буферов

Ошибочный индекс своего индикаторного буфера

Свойства пользовательских индикаторов

Ошибочный идентификатор свойства пользовательского индикатора

Ошибочный идентификатор свойства счета

Ошибочный идентификатор свойства торговли

Торговля для эксперта запрещена

Позиция не найдена

Ордер не найден

Сделка не найдена

Не удалось отправить торговый запрос

Не удалось вычислить значение прибыли или маржи

Индикатор не может быть создан

Недостаточно памяти для добавления индикатора

Индикатор не может быть применен к другому индикатору

Ошибка при добавлении индикатора

Запрошенные данные не найдены

Ошибочный хэндл индикатора

Неправильное количество параметров при создании индикатора

Отсутствуют параметры при создании индикатора

Первым параметром в массиве должно быть имя пользовательского индикатора

Неправильный тип параметра в массиве при создании индикатора

Ошибочный индекс запрашиваемого индикаторного буфера

Стакан цен не может быть добавлен

Стакан цен не может быть удален

Данные стакана цен не могут быть получены

Ошибка при подписке на получение новых данных стакана цен

Не может быть открыто одновременно более 64 файлов

Недопустимое имя файла

Слишком длинное имя файла

Ошибка открытия файла

Недостаточно памяти для кеша чтения

Ошибка удаления файла

Файл с таким хэндлом уже был закрыт, либо не открывался вообще

Ошибочный хэндл файла

Файл должен быть открыт для записи

Файл должен быть открыт для чтения

Файл должен быть открыт как бинарный

Файл должен быть открыт как текстовый

Файл должен быть открыт как текстовый или CSV

Файл должен быть открыт как CSV

Ошибка чтения файла

Должен быть указан размер строки, так как файл открыт как бинарный

Для строковых массивов должен быть текстовый файл, для остальных – бинарный

Это не файл, а директория

Файл не существует

Файл не может быть переписан

Ошибочное имя директории

Директория не существует

Это файл, а не директория

Директория не может быть удалена

Не удалось очистить директорию (возможно, один или несколько файлов заблокированы и операция удаления не удалась)

Не удалось записать ресурс в файл

Не удалось прочитать следующую порцию данных из CSV-файла (FileReadString, FileReadNumber, FileReadDatetime, FileReadBool), так как достигнут конец файла

В строке нет даты

В строке ошибочная дата

В строке ошибочное время

Ошибка преобразования строки в дату

Недостаточно памяти для строки

Длина строки меньше, чем ожидалось

Слишком большое число, больше, чем ULONG_MAX

Ошибочная форматная строка

Форматных спецификаторов больше, чем параметров

Параметров больше, чем форматных спецификаторов

Испорченный параметр типа string

Позиция за пределами строки

К концу строки добавлен 0, бесполезная операция

Неизвестный тип данных при конвертации в строку

Испорченный объект строки

Работа с массивами

Копирование несовместимых массивов. Строковый массив может быть скопирован только в строковый, а числовой массив – в числовой

Приемный массив объявлен как AS_SERIES, и он недостаточного размера

Слишком маленький массив, стартовая позиция за пределами массива

Массив нулевой длины

Должен быть числовой массив

Должен быть одномерный массив

Таймсерия не может быть использована

Должен быть массив типа double

Должен быть массив типа float

Должен быть массив типа long

Должен быть массив типа int

Должен быть массив типа short

Должен быть массив типа char

Должен быть массив типа string

Работа с OpenCL

Функции OpenCL на данном компьютере не поддерживаются

Внутренняя ошибка при выполнении OpenCL

Ошибка создания очереди выполнения в OpenCL

Слишком длинное имя точки входа (кернел OpenCL)

Ошибка создания кернел — точки входа OpenCL

Ошибка при установке параметров для кернел OpenCL (точки входа в программу OpenCL)

Неверный размер буфера OpenCL

Неверное смещение в буфере OpenCL

Превышено максимальное число OpenCL объектов

Ошибка выбора OpenCL устройства

Работа с базами данных

Внутренняя ошибка базы данных

Невалидный хендл базы данных

Превышено максимально допустимое количество объектов Database

Ошибка подключения к базе данных

Ошибка выполнения запроса

Ошибка создания запроса

Данных для чтения больше нет

Ошибка перехода к следующей записи запроса

Данные для чтения результатов запроса еще не готовы

Ошибка автоподстановки параметров в SQL-запрос

Работа с WebRequest()

URL не прошел проверку

Не удалось подключиться к указанному URL

Превышен таймаут получения данных

Ошибка в результате выполнения HTTP запроса

Работа с сетью (сокетами)

В функцию передан неверный хэндл сокета

Открыто слишком много сокетов (максимум 128)

Ошибка соединения с удаленным хостом

Ошибка отправки/получения данных из сокета

Ошибка установления защищенного соединения (TLS Handshake)

Отсутствуют данные о сертификате, которым защищено подключение

Должен быть указан пользовательский символ

Некорректное имя пользовательского символа. В имени символа можно использовать только латинские буквы без знаков препинания, пробелов и спецсимволов (допускаются «.», «_», » и «#»). Не рекомендуется использовать символы , :, «, /,, |, ?, *.

Слишком длинное имя для пользовательского символа. Длина имени символа не должна превышать 32 знака с учётом завершающего 0

Слишком длинный путь для пользовательского символа. Длина пути не более 128 знаков с учётом «Custom\», имени символа, разделителей групп и завершающего 0

Пользовательский символ с таким именем уже существует

Ошибка при создании, удалении или изменении пользовательского символа

Попытка удалить пользовательский символ, выбранный в обзоре рынка (Market Watch)

Неправильное свойство пользовательского символа

Ошибочный параметр при установке свойства пользовательского символа

Слишком длинный строковый параметр при установке свойства пользовательского символа

Источник: www.mql5.com

Win32 API
Сообщение об ошибках и обработка

Каждый поток будет иметь свой последний код ошибки. Windows API установит последний код ошибки в вызывающем потоке.

Вы всегда должны вызывать GetLastError сразу после проверки возвращаемого значения функции API Windows.

Большинство функций Windows API устанавливают последний код ошибки, когда они терпят неудачу. Некоторые также установят последний код ошибки, когда они преуспеют. Существует ряд функций, которые не устанавливают последний код ошибки. Всегда обращайтесь к документации по функциям Windows API.

Невозможно использовать FORMAT_MESSAGE_FROM_SYSTEM без FORMAT_MESSAGE_IGNORE_INSERTS при использовании функции FormatMessage для получения описания кода ошибки.

Вступление

API Windows предоставляется с помощью C-вызываемого интерфейса. Успех или сбой вызова API сообщаются строго через возвращаемые значения. Исключения не являются частью документированного контракта (хотя некоторые реализации API могут вызывать исключения SEH , например, при передаче аргумента lpCommandLine только для чтения в CreateProcess ).

Сообщение об ошибке грубо относится к одной из четырех категорий:

  • Только возвращаемое значение
  • Возвращаемое значение с дополнительной информацией о сбое
  • Возвращаемое значение с дополнительной информацией об отказе и успехе
  • Возвращаемое значение HRESULT

Документация для каждого вызова API явно вызывается, как сообщаются ошибки. Всегда обращайтесь к документации.

Ошибка, сообщенная только возвратным значением

Некоторые вызовы API возвращают единый флаг отказа / успеха без какой-либо дополнительной информации (например, GetObject ):

if ( GetObjectW( obj, 0, NULL ) == 0 ) < // Failure: no additional information available. >

Сообщается об ошибке с сообщением об ошибке

В дополнение к возвращаемому значению отказа / успеха некоторые вызовы API также устанавливают последнюю ошибку при сбое (например, CreateWindow ). Документация обычно содержит следующую стандартную формулировку для этого случая:

Если функция завершается успешно, возвращаемое значение .
Если функция не работает, возвращаемое значение . Чтобы получить расширенную информацию об ошибке, вызовите GetLastError .

if ( CreateWindowW( . ) == NULL ) < // Failure: get additional information. DWORD dwError = GetLastError(); >else < // Success: must not call GetLastError. >

Очень важно, что вы вызываете GetLastError() НЕМЕДЛЕННО. Последний код ошибки может быть перезаписан любой другой функцией, поэтому, если есть дополнительная функция вызова между неудавшейся функцией и вызовом GetLastError() , возврат из GetLastError() больше не будет надежным. Будьте особенно осторожны при работе с конструкторами C ++.

Как только вы получите код ошибки, вам нужно будет его интерпретировать. Вы можете получить полный список кодов ошибок в MSDN на странице Системные коды ошибок (Windows) . Кроме того, вы можете посмотреть в своих файлах заголовков системы; файл со всеми константами кода ошибки — winerror.h . (Если у вас есть официальный SDK от Microsoft для Windows 8 или новее, это находится в shared папке с папкой include.)

Заметки о вызове GetLastError() на других языках программирования

.net (C #, VB и т. д.)

С .net вы не должны P / Invoke в GetLastError() напрямую. Это связано с тем, что среда выполнения .net сделает другие вызовы Windows API одним и тем же потоком за вашей спиной. Например, сборщик мусора может вызвать VirtualFree() если он найдет достаточно памяти, которую он больше не использует, и это может произойти между вашим назначенным вызовом функции и вашим вызовом GetLastError() .

Вместо этого .net предоставляет Marshal.GetLastWin32Error() , которая будет извлекать последнюю ошибку из последнего вызова P / Invoke, который вы сами сделали. Используйте это вместо прямого вызова GetLastError() .

(.net, похоже, не мешает вам импортировать GetLastError() любом случае, я не уверен, почему.)

Идти

Различные средства, предоставляемые Go для вызова DLL-функций (которые находятся как в syscall пакета, syscall и в пакете golang.org/x/sys/windows ), возвращают три значения: r1 , r2 и err . r2 никогда не используется; вы можете использовать пустой идентификатор. r1 — возвращаемое значение функции. err является результатом вызова GetLastError() но преобразуется в тип, реализующий error , поэтому вы можете передать его вызывающим функциям для обработки.

Поскольку Go не знает, когда вызывать GetLastError() а когда нет, он всегда будет возвращать ошибку nil . Поэтому типичная идиома обработки ошибок Go

r1, _, err := syscall.Syscall12(CreateWindowW.Addr(), . ) if err != nil < // handle err >// use r1

не будет работать. Вместо этого вы должны проверить r1 точно так же, как и на C, и использовать только err если это указывает, что функция возвратила ошибку:

r1, _, err := syscall.Syscall12(CreateWindowW.Addr(), . ) if r1 == 0 < // handle err >// use r1

Сообщается об ошибке с дополнительной информацией о сбоях и успехах

Некоторые вызовы API могут преуспеть или сбой более чем одним способом. API обычно возвращают дополнительную информацию как для успешных вызовов, так и для ошибок (например, CreateMutex ).

if ( CreateMutexW( NULL, TRUE, L»Global\MyNamedMutex» ) == NULL ) < // Failure: get additional information. DWORD dwError = GetLastError(); >else < // Success: Determine which mutex was returned. if ( GetLastError() == ERROR_ALREADY_EXISTS ) < // Existing mutex object returned. >else < // Newly created mutex object returned. >>

Ошибка, сообщенная как значение HRESULT

HRESULT s — числовые 32-битные значения, где биты или диапазоны бит кодируют четко определенную информацию. MSB — это флаг отказа / успеха, а остальные бит хранят дополнительную информацию. Отказ или успех можно определить с помощью макросов FAILED или SUCCEEDED . HRESULT s обычно используются совместно с COM, но также отображаются в реализациях, отличных от COM (например, StringCchPrintf ).

const size_t cchBuf = 5; wchar_t buffer[cchBuf] = < 0 >; HRESULT hr = StringCchPrintfW( buffer, cchBuf, L»%s», L»Hello, world!» ); if ( FAILED( hr ) ) < // Failure: Determine specific reason. switch ( hr ) < case STRSAFE_E_INSUFFICIENT_BUFFER: // Buffer too small; increase buffer and retry. . case STRSAFE_E_INVALID_PARAMETER: // Invalid parameter; implement custom error handling (e.g. logging). . default: // Some other error code; implement custom error handling (e.g. logging). . >>

Преобразование кода ошибки в строку сообщения

GetLastError возвращает числовой код ошибки. Чтобы получить описательное сообщение об ошибке ( например , для отображения пользователю), вы можете вызвать FormatMessage :

// This functions fills a caller-defined character buffer (pBuffer) // of max length (cchBufferLength) with the human-readable error message // for a Win32 error code (dwErrorCode). // // Returns TRUE if successful, or FALSE otherwise. // If successful, pBuffer is guaranteed to be NUL-terminated. // On failure, the contents of pBuffer are undefined. BOOL GetErrorMessage(DWORD dwErrorCode, LPTSTR pBuffer, DWORD cchBufferLength) < if (cchBufferLength == 0) < return FALSE; >DWORD cchMsg = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, /* (not used with FORMAT_MESSAGE_FROM_SYSTEM) */ dwErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), pBuffer, cchBufferLength, NULL); return (cchMsg > 0); >

В C ++ вы можете значительно упростить интерфейс, используя класс std::string :

#include #include #include #include #include typedef std::basic_string String; String GetErrorMessage(DWORD dwErrorCode) < LPTSTR psz = NULL; const DWORD cchMsg = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, // (not used with FORMAT_MESSAGE_FROM_SYSTEM) dwErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast( if (cchMsg > 0) < // Assign buffer to smart pointer with custom deleter so that memory gets released // in case String’s c’tor throws an exception. auto deleter = [](void* p) < ::HeapFree(::GetProcessHeap(), 0, p); >; std::unique_ptr ptrBuffer(psz, deleter); return String(ptrBuffer.get(), cchMsg); > else < throw std::runtime_error(«Failed to retrieve error message string.»); >>

ПРИМЕЧАНИЕ. Эти функции также работают для значений HRESULT . Просто измените первый параметр из DWORD dwErrorCode на HRESULT hResult . Остальная часть кода может оставаться неизменной.

Источник: learntutorials.net

Как пользоваться GetLastError() ?

Хотел узнать, как пользоваться этой функцией? Где-то говорят вывести её на экран и посмотреть(не получается. ), где-то — через Error Lookup. Но он требует какую-то переменную. Делал так: UINT error = GetLastError(); (на одном форуме нашёл) и вводил эту переменную в Error Lookup — ругается.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как сделать обработку ошибок? GetLastError возвращает ошибки 203, 299, 1400
Уже три дня бьюсь :wall: не где не могу найти как делать обработку ошибок и что делать если тебе.

GetLastError
А как иожно сделать так, чтобы при вызове этой функции возвращалась пользовательская ошибка. Т.е. я.

Кроссплатформенный GetLastError
Подскажите, есть ли в .net core какой нибудь кроссплатформенный вариант получения кода последней.

481 / 473 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
После использование WinAPI -шной функции если она закончилась не удачей пиши —

int Error = GetLastError();
затем смотри номер ошибки и лезь в MSDN и ищи свой номер.
Регистрация: 26.11.2012
Сообщений: 55
смотри номер ошибки
А где на него смотреть?
481 / 473 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
Регистрация: 26.11.2012
Сообщений: 55

Вы меня не так поняли). Я хотел спросить не где расшифровать номер ошибки, а как мне его увидеть.
Ну т.е поставил я после кода в котором ошибка int Error = GetLastError(); а дальше что?

481 / 473 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
Ну т.е поставил я после кода в котором ошибка int Error = GetLastError(); а дальше что?

coutError;
Регистрация: 26.11.2012
Сообщений: 55
Вообщем да, но приложение не консольное.
481 / 473 / 63
Регистрация: 26.01.2011
Сообщений: 2,033

смотри пример — допустим мы используем для запуска файла — ShellExecuteA , и специально пропишим не существующий путь .

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#include #include #include using namespace std; int main(int argc, char *argv[]) { int Error = 0; ShellExecuteA(NULL,NULL,»C:\AbraKadabra.exe»,NULL,NULL,SW_SHOWNORMAL); Error = GetLastError(); cout»Number Error = «Error»n»; // Номер ошибки = 2 — Не удается найти указанный файл. system(«PAUSE»); return EXIT_SUCCESS; }
Добавлено через 3 минуты
Вообщем да, но приложение не консольное.
Да а разница то , тогда так —
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static int Error = 0; static char Number[20]; switch (message) /* handle the messages */ { case WM_CREATE: ShellExecuteA(NULL,NULL,»C:\AbraKadabra.exe»,NULL,NULL,SW_SHOWNORMAL); Error = GetLastError(); itoa(Error,Number,10); MessageBoxA(hwnd,Number,»Info»,MB_OK); break; case WM_DESTROY: PostQuitMessage (0); /* send a WM_QUIT to the message queue */ break; default: /* for messages that we don’t deal with */ return DefWindowProc (hwnd, message, wParam, lParam); } return 0; }
Регистрация: 26.11.2012
Сообщений: 55
Ясно, спасибо большое!
Ушел с форума

Эксперт С++

16453 / 7417 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1

Маленькая поправочка, исключительно для точности.
GetLastError возвращает значение типа DWORD (unsigned long), а не int.

Регистрация: 06.09.2014
Сообщений: 52

Подскажите, пожалуйста!
Как мне обработать результат GetLastError() «удалённо от места, но в коде»? В примере из
MSDN показано как это работает для одного потока. Плюс, могут встретиться функции в коде, которые повторно и успешно вызывают GetLastError(). До сих пор я использовал простенькую

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
void TLogManager::LastError(const WideString FILE, const WideString FNC = «», const int LINE = 0) const DWORD dw = GetLastError(); void* cstr; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER

функцию, но столкнулся с 2-мя вышеописанными проблемами. А очень хочется.
P.S.:
Я наметил 2 подхода:
1) использовать свой класс Exception и кидать исключения, но с потоками проблема останется, т.к. стеки разные. Можно копать дальше и решить эту проблему: я где-то видел, как ставился хук на (kernel32) UnhandledExceptionFilter при помощи библитечки Detuors и подменяется адресс раскрутки.
2) изучить и использовать один из логгеров Pantheios/google-glog/Boost.Log/log4cpp.
В конце-концов хочется очень малого: получить значения некоторых переменных на момент краха программы, а лучше воссоздать ситуацию краха «в лабораторных условиях».

Источник: www.cyberforum.ru

ЧАCTЬ I МАТЕРИАЛЫ ДЛЯ ОБЯЗАТЕЛЬНОГО ЧТЕНИЯ

При возникновении ошибки Вы должны разобраться, почему вызов данной функции оказался неудачен. За каждой ошибкой закреплен свой код — 32-битное число.

Функция Windows, обнаружив ошибку, через механизм локальной памяти потока сопоставляет соответствующий кол ошибки с вызывающим потоком (Локальная память потока рассматривается в главе 21.) Это позволяет потокам работать независимо друг от друга, не вмешиваясь в чужие ошибки. Когда функция вернет Вам управление, ее возвращаемое значение будет указывать на то, что произошла какая-то ошибка.

Какая именно — Вы узнаете, вызвав функцию GetLastError. DWORD GetLastError(); Она просто возвращает 32-битный код ошибки для данного потока. Теперь, когда у Вас есть код ошибки, Вам нужно обменять его на что-нибудь более внятное. Список кодов ошибок, определенных Microsoft, содержится в заголовочном файле WinError.h. Я приведу здесь его небольшую часть, чтобы Вы представляли, на что он похож // MessageId: ERROR_SUCCESS // MessageText // The operation completed successfully. #define ERROR_SUCCESS 0L #define NO_ERROR 0L // dderror #define SEC_E_OK ((HRESULT)0x00000000L) // MessageId ERROR_INVALID_FUNCTION // MessageText: // Incorrect function. #define ERROR_INVALID_FUNCTION 1L // dderror // MessageId: ERROR_FILE_NOT_FOUND // MessageText: // The system cannot find the file specified. #define ERROR_FILE_NOT_FOUND 2L // MessageId. ERROR_PATH_NOT_FOUND // MessageText // The syblem cannot find the path specified. #define ERROR_PATH_NOT_FOUND 3L // MessageId ERROR_TOO_MANY_OPEN_FILES // MessageText:

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...