Карта сайта 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.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



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


реклама



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

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 04:29:08/0.0070500373840332/2