Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование FormatMessage


RDS ©   (2006-05-03 11:39:00) 

Нужно получить не код ошибки, а расшифровку этого кода. Делаю следующим образом :
  err:dword; perr:pchar;
................
  err:=GetLastError;
  //showmessage(IntToStr(err));
  formatmessage(FORMAT_MESSAGE_FROM_SYSTEM,
               nil,err,LANG_ENGLISH,perr,1024,nil);
  showmessage(widestring(perr));

В сообщении получаю набор крокозябров. Подскажите, где может быть ошибка.
Спасибо


RDS   (2006-05-03 13:07:00) [1]

Спасибо, все работает


begin...end   (2006-05-03 12:34:00) [2]

> RDS

Посмотрите реализацию SysUtils.SysErrorMessage.


fellix   (2006-05-03 12:31:00) [3]


> RDS ©   (03.05.06 11:39)  

1. Создай буфер perr^ или используй FORMAT_MESSAGE_ALLOCATE_BUFFER и LocalFree.
2. Зачем там widestring?


Плохиш   (2006-05-03 12:31:00) [4]


lpBuffer

Points to a buffer for the formatted (and null-terminated) message. If dwFlags includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a bufferusing the LocalAlloc function, and places the address of the buffer at the address specified in lpBuffer.


> Получается нужно сделать getmem(perr,1024), так?

да или добавить "or FORMAT_MESSAGE_ALLOCATE_BUFFER" в первый параметр.


RDS   (2006-05-03 12:27:00) [5]

Я так понял, что FormatMessage это сам делает. Получается нужно сделать getmem(perr,1024), так?


Плохиш   (2006-05-03 11:58:00) [6]

Память для perr распределяешь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо