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

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

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

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

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


 function SystemErrorMessage: string;
 var
   P: PChar;
 begin
   if FormatMessage(Format_Message_Allocate_Buffer + Format_Message_From_System,
                    nil,
                    GetLastError,
                    0,
                    @P,
                    0,
                    nil) <> 0 then
   begin
     Result := P;
     LocalFree(Integer(P))
   end
   else
     Result := '';
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   ShowMessage(SystemErrorMessage);
 end;

Here's the translation of the text into Russian:

Функция SystemErrorMessage

Эта функция возвращает строку, представляющую собой последний системный ошибочный сообщение. Она использует Windows API-функцию FormatMessage, чтобы получить ошибочное сообщение.

  1. Функция не принимает параметров и возвращает строку.
  2. Она выделяет буфер с помощью Format_Message_Allocate_Buffer и устанавливает его в nil.
  3. Она вызывает функцию GetLastError, чтобы получить последний системный код ошибки.
  4. Если FormatMessage успешна, она заполняет буфер ошибочным сообщением и хранит адрес буфера в переменной P.
  5. Функция возвращает содержимое буфера как строку.
  6. Если FormatMessage неудачна, она возвращает пустую строку.

Процедура TForm1.Button1Click

Эта процедура вызывается при клике кнопки на Form1. Она вызывает функцию SystemErrorMessage и отображает результат в сообщении с помощью ShowMessage.

Вот некоторые предложения по улучшению:

  • Вместо ручного выделения и освобождения памяти, можно использовать встроенный тип Delphi TString и его методы для работы со строками.
  • Рассмотрите добавление обработки ошибок для случаев, когда FormatMessage неудачна или возвращает пустую строку.
  • Вам может понравиться добавить более функциональности к функции, например, форматирование ошибочного сообщения в конкретном виде.

Вот альтернативное решение с использованием встроенных функций Delphi для работы со строками:

function SystemErrorMessage: string;
begin
  Result := Format('Ошибка %d: %s', [GetLastError, SysErrorMessage(GetLastError)]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(SystemErrorMessage);
end;

В этом коде используется функция Format, чтобы создать форматированное ошибочное сообщение строкой. Местоимение %d заменяется на последний системный код ошибки, а местоимение %s заменяется на соответствующее ошибочное сообщение с помощью функции SysErrorMessage.

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-11-30 11:42:55
2024-12-10 23:43:45/0.008018970489502/1