Замена функций файлов MT4.

 

Привет, друзья,

Многие люди спрашивали меня и форум metaquotes о функциях работы с файлами.

Я думаю, что в MT4 есть много ошибок в этих функциях.

1- Они не работают в бэктестинге

2- Они не пишут вне пути "MetaTrader 4\experts\files".

Сегодня я открыл свой Visual C++ и написал dll для работы с файлами для MT4, надеюсь, вам понравится, и ее исходный код, и расскажите мне о своих .

Установка:

1- Распаковать"mtguru1.dll" по пути "MetaTrader 4\experts\libraries".

2- Распаковать"FilesDemo.mq4" по пути "MetaTrader 4\experts\indicators" и скомпилировать его.

3- Распаковать"gFiles.mqh" по пути "MetaTrader 4\experts\include".

4- Загрузите FilesDemo из ваших индикаторов - не забудьте включить "Allow DLL Import".

5- Наслаждайтесь.

Файлы:
mtguru1.zip  95 kb
 

Обратная связь

Привет, друзья,

Любые отзывы, пожалуйста, ?

 

Ну, я не проверял это. Но если это работает... это просто УДИВИТЕЛЬНО!!!

Я проверил демо-файл .mq4, и он такой простой и элегантный. Хорошая работа.

Единственный вопрос, который у меня возник - что делать с новыми строками.

Как использовать gFile для записи новой строки?

 

Спасибо!

fivewhy:
Ну, я не тестировал это. Но если это работает... это здорово!!!

Я проверил демо-файл .mq4, и он такой простой и элегантный. Хорошая работа.

Единственный вопрос, который у меня возник - что делать с новыми строками.

Как использовать gFile для записи новой строки?

5why,

Большое спасибо за ваш комментарий.

Я думаю, что вопрос печати новых строк требует доработки, спасибо за замечание.

 

хорошо сделано , но файловые функции (как и многие другие) могут быть использованы непосредственно из windows API dlls.

пример импорта функции копирования файла:

#import "Kernel32.dll"

bool CopyFileA (string source_file, string destination_file, bool if_exist);

С помощью DLL можно делать множество вещей, например, доступ к базе данных SQL и так далее.

 

где я могу найти список всех функций, доступных в kernel32.dll (и других .dll для windows)?

Edit: Нашел. См. прикрепленный файл.

Файлы:
kernel32.txt  306 kb
 

Это верно, но?

Beluck:
молодец , но файловые функции (как и многие другие) можно использовать непосредственно из windows API dlls.

пример импорта функции копирования файла:

#import "Kernel32.dll"

bool CopyFileA (string source_file, string destination_file, bool if_exist);

С помощью DLL можно делать множество вещей, например, доступ к базе данных SQL и так далее.

Beluck,

Все правильно , но не могли бы вы дать мне .mql демо, показывающее, как использовать функции kernel32 CreateFile, OpenFile, WriteFile и ReadFile в MQL4.

HANDLE CreateFile(

LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDisposition,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile

);

HFILE OpenFile(

LPCSTR lpFileName,

LPOFSTRUCT lpReOpenBuff,

UINT uStyle

);

BOOL WriteFile(

HANDLE hFile,

LPCVOID lpBuffer,

DWORD nNumberOfBytesToWrite,

LPDWORD lpNumberOfBytesWritten,

LPOVERLAPPED lpOverlapped

);

BOOL ReadFile(

HANDLE hFile,

LPVOID lpBuffer,

DWORD nNumberOfBytesToRead,

LPDWORD lpNumberOfBytesRead,

LPOVERLAPPED lpOverlapped

);
 

ted

alerts.mqh не является частью mtguru1.zip, не удалось запустить FilesDemo? Заранее благодарю.

 

gFiles.mqh

sx ted:
alerts.mqh не является частью mtguru1.zip, не удалось запустить FilesDemo? Заранее благодарю.

sx ted,

Извините, я имел в виду"gFiles.mqh".

Чтобы запустить FilesDemo:

1- Распакуйте"mtguru1.dll" по пути"MetaTrader 4\experts\libraries".

2- Распакуйте"FilesDemo.mq4" по пути"MetaTrader 4\experts\indicators" и скомпилируйте его.

3- Распаковать"gFiles.mqh" по пути"MetaTrader 4\experts\include".

4- Загрузите FilesDemo из ваших индикаторов - не забудьте включить"Allow DLL Import".

 

ted

CodersGuru, спасибо супер, у вас есть эквивалент FileTell()

 

Обновлено!

sx ted:
CodersGuru, спасибо вам супер, у вас есть эквивалент FileTell()

sx ted,

Я обновил программу. Теперь она включает в себя эти функции:

int gFileOpen(string file_name,int mode);

bool gFileWrite(int handle,string data);

bool gFileClose(int handle);

string gFileRead(int handle,int length=0);

void gFileSeek(int handle,int offset, int mode);

bool gFileDelete(string file_name);

int gFileSize(int handle);

int gFileTell(int handle);

bool gFileFlush(int handle);

bool gFileCopy(string source,string distance,bool IfExists);

bool gFileMove(string source,string distance);

Надеюсь, вам понравится.

Файлы:
mtguru1.zip  88 kb
Причина обращения: