Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Отображение отформатированных сообщений об ошибках

Delphi , Синтаксис , Ошибки и Исключения

Отображение отформатированных сообщений об ошибках

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch


 function GetLastErrorText(): string;
 var
   dwSize: DWORD;
   lpszTemp: PAnsiChar;
 begin
   dwSize := 512;
   lpszTemp := nil;
   try
     GetMem(lpszTemp, dwSize);
     FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_ARGUMENT_ARRAY,
       nil,
       GetLastError(),
       LANG_NEUTRAL,
       lpszTemp,
       dwSize,
       nil)
   finally
     Result := lpszTemp;
     FreeMem(lpszTemp)
   end
 end;

Here's the translation of the text into Russian:

Функция Delphi, называемая GetLastErrorText, получает текст ошибки, связанной с последней системной ошибкой. Функция не принимает параметров и возвращает строку.

Рассмотрим, как функция работает:

  1. Она объявляет два локальных переменных: dwSize типа DWORD (32-битное беззнаковое целое число) для хранения размера буфера и lpszTemp типа PAnsiChar (указатель на ANSI-символ) для хранения текста ошибки.
  2. Она initializes dwSize в 512, что является разумным размером буфера для большинства текстов ошибок.
  3. Она устанавливает lpszTemp в nil, указывая, что память для нее еще не была выделена.
  4. Функция использует блок try-finally для обеспечения правильной обработки выделения и освобождения памяти.
  5. Внутри блока try, она выделяет память для lpszTemp с помощью процедуры GetMem, передавая размер буфера (dwSize) в качестве аргумента.
  6. Затем она вызывает функцию FormatMessage для получения текста ошибки, связанной с последней системной ошибкой. Функция принимает несколько аргументов:
    • FORMAT_MESSAGE_FROM_SYSTEM: указывает, что форматированный текст должен быть получен из системы.
    • FORMAT_MESSAGE_ARGUMENT_ARRAY: указывает, что форматированный текст должен включать массив аргументов (в этом случае - одиночный аргумент: код ошибки, возвращенный функцией GetLastError()).
    • nil: указывает, что нет дополнительных аргументов для передачи в форматированный текст.
    • GetLastError(): возвращает код последней системной ошибки в виде целого числа.
    • LANG_NEUTRAL: указывает язык для текста ошибки (в этом случае - нейтральный, то есть системный по умолчанию).
    • lpszTemp: указывает буфер для хранения форматированного текста ошибки.
    • dwSize: указывает размер буфера.
    • nil: указывает, что нет дополнительных аргументов для передачи в форматированный текст.
  7. Наконец, внутри блока finally, она устанавливает значение возвращаемой функции в содержимое lpszTemp и затем освобождает выделенную память для lpszTemp с помощью процедуры FreeMem.

Функция возвращает строку, содержащую текст ошибки, связанной с последней системной ошибкой. Если происходит ошибка при получении текста ошибки (например, если буфер слишком маленький), функция вернет пустую строку ('').

В статье описывается функция GetLastErrorText, которая отображает отформатированные сообщения об ошибках в приложении Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Ошибки и Исключения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:12:17/0.0054872035980225/1