Файловые операции в MQL4 без ограничений - страница 2

 
Aleksandr Babitskii #:

"Ошибка открытия файла D:\20240524.log"

handle получаю "-1". Путь точно правильный. Что может быть не так?

может нехватать слеша в пути :-)

string path="D:\\20240524.log"; 

 
Aleksey Semenov #:
вроде как средствами мкл за пределы корневой директории программы мкл не вылезти - C:\Users\Алексей\AppData\Roaming\MetaQuotes\Terminal\1FC724C8C211BFE8ECF8B599A855301E\MQL4\Files - вот отсюда вот (пример)

Вот как раз, чтобы выбраться за пределы песочницы и нужно использовать WinAPI, но тут устаревшие функции используются. Сейчас они не работают.

 
Aleksandr Babitskii #:

"Ошибка открытия файла D:\20240524.log"

handle получаю "-1". Путь точно правильный. Что может быть не так?

Этот код разрабатывался в 2006-ом, когда строки в MQL были еще ANSI. Сейчас же все строки - Unicode. Так, функция _lopen принимает на вход LPCSTR, т. е. ANSI. Поэтому для использования текущего кода нужно преобразовывать все строки в многобайтную кодировку. Функция StringToCharArray().

 
Ihor Herasko #:
Этот код разрабатывался в 2006-ом, когда строки в MQL были еще ANSI. Сейчас же все строки - Unicode. Так, функция _lopen принимает на вход LPCSTR, т. е. ANSI. Поэтому для использования текущего кода нужно преобразовывать все строки в многобайтную кодировку. Функция StringToCharArray().

Функции  _lopen больше нет. Там всё надо переписывать (

 
Aleksandr Babitskii #:

Функции  _lopen больше нет. Там всё надо переписывать (

там не так уж много переписывать..

а раз всё равно нужен флаг "разрешены DLL" - то правильный путь это написать DLL. C/C++/C#/Pascal и тьма прочих в помощь.