ошибка при работе с файлами средствами WinApi в МТ4

 

Пару лет назад писал программки для работы с файлами в МТ4. Сейчас понадобилось записать в сторонний файл информацию, но не смог. Помогите решить проблему...

Файл который проверяю на открытие, создан и присутствует в указанной папке. Программа проверялась на нескольких МТ4 на 5 разных компьютерах с WIN7 и XP. Код тестовой программки для открытия-закрытия файла:

 

//+------------------------------------------------------------------+
//| Тест файлопен.mq4 |
//| sanyooooook |
//| .ru, .ru |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#include <WinUser32.mqh>
#import "kernel32.dll"
int _lopen (string path, int of);
int _lcreat (string path, int attrib);
int _llseek (int handle, int offset, int origin);
int _lread (int handle, string buffer, int bytes);
int _lwrite (int handle, string buffer, int bytes);
int _lclose (int handle);
#import

extern string FilePath="C:\M222.txt";
extern int Sleep_=1000;//Периодичность открытия файла
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
void OnTick(void)
{
  int handle=_lopen(FilePath,0);
if(handle<0)
Print("Ошибка открытия файла ",FilePath," handle=",handle);
int result=_lclose (handle);
if(result<0)
Print("Ошибка закрытия файла ",FilePath);
Sleep(Sleep_);
}

//+------------------------------------------------------------------+

 

 

Ошибка из журнала экспертов:

 

Один из МТ4 на которых проверялось:

 

 
Похоже, Вы попутали ansi и unicode
 
simple:

Пару лет назад писал программки для работы с файлами в МТ4

 

//+------------------------------------------------------------------+
//| Тест файлопен.mq4 |
//| sanyooooook |

//+------------------------------------------------------------------+

 

 


Да и код - не Ваш...
 
stringo:
Да и код - не Ваш...
Этот код не мой.
 
stringo:
Похоже, Вы попутали ansi и unicode
Не подскажете как мне это исправить?
 

Странно, тут была ссылка от stringo с легким троллингом моих поисковых талантов, сходив по которой я все понял и исправил. Жаль что этот пост был удален.

Тем не менее пока я решил не вдаваться глубоко в дебри  разбора ansi и unicode и вышел из положения так:

//+------------------------------------------------------------------+
//|                                                Тест файлопен.mq4 |
//|                                                      sanyooooook |
//|                                                         .ru, .ru |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#include <WinUser32.mqh>
#import "kernel32.dll"
   int CopyFileW (string lpExistingFileName, string lpNewFileName, int bFailIfExists);
#import

extern string FilePath="C:\\test\M222.txt";
extern int Sleep_=1000;//Периодичность открытия файла
extern string FileName="M222.txt";
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
  int init()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void OnTick(void) 
{
     int handle=FileOpen(FileName,FILE_READ|FILE_WRITE);
     if(handle<0) 
        Print("Ошибка открытия файла ",TerminalInfoString(TERMINAL_DATA_PATH)+"\MQL4\Files"+"\\"+FileName,"   handle=",handle);
     int result=FileWrite(handle,TimeCurrent());      
     if(result==0)  
        Print("Ошибка записи в файл ",TerminalInfoString(TERMINAL_DATA_PATH)+"\MQL4\Files"+"\\"+FileName);   
     FileClose(handle);
     CopyFileW(TerminalInfoString(TERMINAL_DATA_PATH)+"\MQL4\Files"+"\\"+FileName, FilePath, 0);
     Print(TerminalInfoString(TERMINAL_DATA_PATH)+"\MQL4\Files"+"\\"+FileName);
     Sleep(Sleep_);     
}

//+------------------------------------------------------------------+
Какой я молодец!