//===============================================================================================================================================================// Импортируемые функции.//===============================================================================================================================================================#import "ntdll.dll"int RtlGetLastWin32Error();
int RtlSetLastWin32Error (int dwErrCode);
#import#include <WinKernel32.mqh> // Заголовочный файл библиотеки "kernel32.dll" функций API Windows XP.//===============================================================================================================================================================// Объявленные константы.//===============================================================================================================================================================#define FILE_FULL_CREATE 0// Создать или переписать файл.//===============================================================================================================================================================// Функция открывает или создаёт файл.// Функция открывает/создает файл для ввода и/или вывода. Если при открытии для записи файла нет, то он будет создан. Для создания директории// используется функция "CreateDirectory()". Функция возвращает: handle - файловый описатель, если функция выполнилась без ошибки;// -1 - возникла системная ошибка;// -2 - ошибка при перемещении файлового указателя в конец файла;// -3 - указан недопустимый способ открытия файла.//===============================================================================================================================================================int start(){
int FileOpenFull (string PathName="D:\files\DATA.csv", // Имя файла с абсолютным путём.int ModeCWR=0) // Способ открытия файла: 0 - FILE_FULL_CREATE Открытие файла для записи. Если файл существует, то содержимое файла будет// уничтожено. Если файл с таким именем не существует, то будет создан новый.
{
int Error; // Номер последней ошибки.int Handle; // Файловый описатель.//===============================================================================================================================================================
RtlSetLastWin32Error(0); // Обнуляем ошибку.if (ModeCWR != FILE_FULL_READ) // Если функция вызвана не для чтения, проверяем на наличие файла.
{ // Проверяем на наличие файла. Читаем файл.
Handle = CreateFileA (PathName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (RtlGetLastWin32Error() == 2 && Handle == -1) ModeCWR = FILE_FULL_CREATE; // Файла нет. Создаём файл.else
{
if (!CloseHandle (Handle))
{
Error = RtlGetLastWin32Error();
Print ("Ошибка в функции \"FileOpenFull()\". Файл с путём \"", PathName, "\" не закрыт при проверки на наличие. Последняя ошибка: \"", Error, "\". ", StringError (Error));
return (-1);
}
}
RtlSetLastWin32Error(0); // Обнуляем ошибку.
}
//===============================================================================================================================================================// Переключатель по способам открытия файла.//===============================================================================================================================================================switch (ModeCWR)
{ // Создаём файл.case FILE_FULL_CREATE:
{
Handle = CreateFileA (PathName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (Handle == -1)
{
Error = RtlGetLastWin32Error();
Print ("Ошибка в функции \"FileOpenFull()\". Файл с путём \"", PathName, "\" не открыт. Последняя ошибка: \"", Error, "\". ", StringError (Error));
}
return (Handle);
}
//===============================================================================================================================================================// Функция закрытия файла.// Функция закрывает ранее открытый файл. Если файл закрыт успешно, функция возвращает TRUE, иначе возвращает FALSE.//===============================================================================================================================================================bool FileCloseFull (int Handle) // Файловый описатель, возвращаемый функцией "FileOpenFull()".
{
int Error; // Номер последней ошибки.//----
RtlSetLastWin32Error (0);
if (!CloseHandle (Handle))
{
Error = RtlGetLastWin32Error();
Print ("Ошибка в функции \"FileCloseFull()\". Последняя ошибка: \"", Error, "\". ", StringError (Error));
return (false);
}
elsereturn (true);
}
//===============================================================================================================================================================// Функция возвращает код системной ошибки.//===============================================================================================================================================================int SystemError()
{
return (RtlGetLastWin32Error());
}
//===============================================================================================================================================================// Функция возвращает строковое описание кода системной ошибки.//===============================================================================================================================================================string StringError (int ErrorCode) // Код системной ошибки.
{
int i;
string String = "";
//----int Buffer[128];
//----ArrayInitialize (Buffer, 0);
FormatMessageA (0x1000, 0, ErrorCode, 0, Buffer, ArraySize (Buffer), 0);
//----for (i = 0; i < ArraySize (Buffer); i++)
{
String = String + CharToStr (Buffer[i] & 0xFF)
+ CharToStr (Buffer[i] >> 8 & 0xFF)
+ CharToStr (Buffer[i] >> 16 & 0xFF)
+ CharToStr (Buffer[i] >> 24 & 0xFF);
}
return (StringTrimRight (String));
}
//===============================================================================================================================================================// Конец//===============================================================================================================================================================
}
皆さん、こんにちは。ユーザーが指定したディレクトリにファイルを書き込む関数を書こうとしています(サンドボックスの外で作業しています)。
ZI_File_Functions_Full_Lib" ライブラリを使ってコードを書きましたhttps://www.mql5.com/ru/code/8577
関数"PathFunctions.dll."https://www.mql5.com/ru/code/10873、Vistaで動作するため適さない。私はWindows 7を持っている。
読み込む必要がないので、不要なものはすべて削除し、ディレクトリを取得して、そこに初期値でファイルを作成する、ただそれだけです。
質問です。
1.ファイルに書き込む値がどこにあるのかがわからないのですが?
2.間違いが書かれている箇所が特定できないのですが?
ありがとうございました。
皆さん、こんにちは。ユーザーが指定したディレクトリにファイルを書き込む関数を書こうとしています(サンドボックスの外で作業しています)。
ZI_File_Functions_Full_Lib" ライブラリを使ってコードを書きましたhttps://www.mql5.com/ru/code/8577
関数"PathFunctions.dll."https://www.mql5.com/ru/code/10873、Vistaで動作するため適さない。私はWindows 7を持って いる。
読み込む必要がないので、不要なものはすべて削除し、ディレクトリを取得して、そこに初期値でファイルを作成する、ただそれだけです。
質問です。
1.ファイルに書き込む値がどこにあるのかがわからないのですが?
2.間違いが書かれている箇所が特定できないのですが?
ありがとうございました。
アルチョム!!!Windows 7で動作しないことはどこに書いてあるのですか?なぜ、そんなに不用意に読むのですか?効かないのは当たり前なんですけどね。
あなたのコードを見て、あなたはプログラミングを知らないのだと思いました。まずはヘルプにある例を ご覧ください。実行してください。その様子をご覧ください。そして、より複雑なものへと進んでいくのです。
ファイルが最初に作成されるか、または開かれます。そして、それを書いたり、読んだりする。そして、それを閉じる。関数の宣言をスタートにコピーしただけです。あなたは普遍的な機能からコードの一部を切り取ったのです。今は、ただそこにぶら下がっているだけです。何の関係もないんですけどね。何のために?うまくいかない。
こんにちは、ストラテジーテスターを終了させる方法を教えてください。
個人アカウントにアップロードしなければならない書類は何ですか?
何のために?
資金を引き出すために
証券会社によって異なります。私などは、パスポートのコピーとアンケートで