Импорт делаю так
Запускаю так
Этот код срабатывает на мт4 на всех платформах, на мт5 только под Windows 7. На остальных виндах не работает, выдает:
Мне нужно чтобы работало на всех платформах и на мт5 тоже. Помогите разобраться.
CreateFile возвращает не int, а HANDLE, в 64-битном приложении - это, по местному, ulong
Спасибо за ответ, но, не помогло.
Теперь код выглядит так
#import "kernel32.dll" ulong CreateFileW( string lpFileName, uint dwDesiredAccess, uint dwShareMode, uint lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, uint hTemplateFile ); bool WriteFile( ulong hFile, uchar& lpData[], int nNumberOfBytesToWrite, int& lpNumberOfBytesWritten, int lpOverlapped ); int CloseHandle( ulong hFile ); #import
И так
ulong hFile = CreateFileW(file_path, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 ); if (hFile != INVALID_HANDLE){ int p_number; bool res = WriteFile(hFile, file_data, ArraySize(file_data), p_number, 0 ); CloseHandle(hFile); Print(res); Print(p_number); if (!res || p_number <=0) return false; else return true; } else{ return false; }
Используйте лучше штатные #include <winapi/fileapi.mqh>
Прототип функции неправильный у вас, исключительно под 32 битные операционки.
Должен быть:
int WriteFile(HANDLE file,const ushort &buffer[],uint number_of_bytes_to_write,uint &number_of_bytes_written,OVERLAPPED &overlapped); int WriteFile(HANDLE file,const ushort &buffer[],uint number_of_bytes_to_write,uint &number_of_bytes_written,PVOID overlapped);
посмотрите детали в fileapi.mqh
Используйте лучше штатные #include <winapi/fileapi.mqh>
Прототип функции неправильный у вас, исключительно под 32 битные операционки.
Должен быть:
посмотрите детали в fileapi.mqh
Огромное спасибо, сработало.
Конечный код если кому нужно будет
#import "kernel32.dll" long CreateFileW( string lpFileName, uint dwDesiredAccess, uint dwShareMode, uint lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, uint hTemplateFile ); //bool WriteFile( ulong hFile, uchar& lpData[], int nNumberOfBytesToWrite, int& lpNumberOfBytesWritten, int lpOverlapped ); int WriteFile(long file,const uchar &buffer[],uint number_of_bytes_to_write,uint &number_of_bytes_written,long overlapped); int CloseHandle( long hFile ); #import
long hFile = CreateFileW(file_path, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 ); if (hFile != INVALID_HANDLE){ int p_number; int res = WriteFile(hFile, file_data, ArraySize(file_data), p_number, 0 ); CloseHandle(hFile); Print(res); Print(p_number); if (!res || p_number <=0) return false; else return true; } else{ return false; }

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Импорт делаю так
Запускаю так
Этот код срабатывает на мт4 на всех платформах, на мт5 только под Windows 7. На остальных виндах не работает, выдает:
Мне нужно чтобы работало на всех платформах и на мт5 тоже. Помогите разобраться.