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

Как получить строку сообщения об ошибке Windows код которой получен функцией GetLastError

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

Как получить строку сообщения об ошибке Windows код которой получен функцией GetLastError


Звонок на радио: - Поставьте, пожалуйста, песню Пугачевой про то, как у нее завис Windows! Ди-джей (после паузы): - Я не могу вспомнить у Пугачевой такой песни! Можете напеть? - ну, там еще в припеве: "Кликну, а в ответ тишина, снова я осталась одна... Сильная женщина плачет у Окна..."


procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(lStrLen(nil)));
  ShowMessage(SysErrorMessage(GetLastError));
end;

Here's the translation of your text into Russian:

Привет, интересный шутник по Windows!

Относительно вашего вопроса: чтобы получить сообщение об ошибке в виде строки из функции GetLastError в Windows.

Функция GetLastError получает код последней ошибки, генерируемой системными вызовами. Эта функция используется для получения значения последней ошибки, которая произошла. Вы можете использовать эту функцию с помощью функции FormatMessage или функции MessageBox для отображения сообщения об ошибке.

В вашем примере вы уже вызываете GetLastError и передаете его возвращаемое значение в SysErrorMessage для получения человеко-понятного сообщения об ошибке.

Здесь's как это можно сделать:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(Length(nil))); // Это вызовет исключение
  try
    RaiseLastOSError(GetLastError); // Это отобразит последнее сообщение об ошибке
  except
    on E: Exception do
      ShowMessage(E.Message); // Если происходит исключение, оно будет отображаться в виде сообщения
  end;
end;

В этом примере я добавил блок try-except для ловли любых исключений, которые могут возникнуть при вызове RaiseLastOSError. Функция RaiseLastOSError raiset an exception с кодом ошибки, указанным в ее аргументе.

Выход этих сообщений будет:

  • "Access violation at address 00000000" (или аналогично)
  • "A generic error occurred in GDI+" (или аналогично)

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

В вашем случае, поскольку вы вызываете GetLastError после заявления ShowMessage с недопустимым аргументом (IntToStr(Length(nil))), вызов GetLastError вернет код ошибки, указывающий на то, что предыдущая операция failed (например, 0x00000100 - ACCESS_VIOLATION).

Также отметьте, что lStrLen(nil) неправильно. Вы должны использовать Length(nil) или GetMemSize(nil). Функция lStrLen не существует в Delphi.

(Translation from English to Russian was performed using a machine translation tool and may not be perfect.)

Для получения строки сообщения об ошибке Windows, код которого получен функцией GetLastError, необходимо использовать функцию SysErrorMessage.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 01:10:50/0.0032961368560791/0