Новые библиотеки файловых функций без ограничений. - страница 2

 

Функция RtlGetLastWin32Error() возвращает только числовой код последней системной ошибки. Однако существует возможность получать описание кода ошибки.

Для этого используется функция FormatMessageA(), которая экспортируется из kernel32.dll.


Ниже приведен код функции на MQL4, который возвращает строковое описание системной ошибки:

string StringError(int dwErrCode)
{
   int i, lpBuffer[128];
   string lpString = "";
//----
   ArrayInitialize(lpBuffer,0);
//---- получаем описание кода системной ошибки dwErrCode
   FormatMessageA(0x1000,0,dwErrCode,0,lpBuffer,ArraySize(lpBuffer),0);
//---- преобразуем массив lpBuffer в текстовую строку 
   for(i=0; i<ArraySize(lpBuffer); i++)
   {
      lpString = lpString+CharToStr(lpBuffer[i]     & 0xFF)
                         +CharToStr(lpBuffer[i]>>8  & 0xFF)
                         +CharToStr(lpBuffer[i]>>16 & 0xFF)
                         +CharToStr(lpBuffer[i]>>24 & 0xFF);
   }
   return(StringTrimRight(lpString));
}

В импорте функцию необходимо объявить следующим образом:

#import "kernel32.dll"
   int FormatMessageA(int dwFlags,string lpSource,int dwMessageId,int wLanguageId,int& lpBuffer[],int nSize,int Arguments);
#import


Таким образом, можно получать не только код последней системной ошибки, но и осмысленное его описание.

Эта функция также включена в выше указанную библиотеку.

 

Охохо!.. Ну почему все так сложно!

А можна хоть какойто примерчик. Для новачков. Как все это реализовывается правильно. Лучше все понимаю, если вижу пример.

Да, - к примеру: как записать текст: "Я люблю джаву скрипт" в файл: skrypskryp.txt. И разместить (записать) текстовый файл в папку по адресу (путь): "F:/Users/VelMizar/"?