#define FILE_WRITE_DATA ( 0x0002 ) #define FILE_APPEND_DATA ( 0x0004 ) #define OPEN_ALWAYS 4 #define FILE_ATTRIBUTE_NORMAL 0x00000080 struct test_struct { double price; double lot; double sl; double tp; } test; #import "kernel32.dll" int CreateFileW( string lpFileName, uint dwDesiredAccess, uint dwShareMode, uint lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, uint hTemplateFile ); int WriteFile( int hFile, test_struct& lpStruct, int nNumberOfBytesToWrite, int& lpNumberOfBytesWritten, int lpOverlapped ); int CloseHandle( int hFile ); #import //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { test.price = 1.13; test.lot = 1.0; test.sl = 1.0; test.tp = 2.0; string terminal_data_path = TerminalInfoString( TERMINAL_DATA_PATH ); string fileName = terminal_data_path + "\\MQL4\\Files\\TestFile"; int hFile = CreateFileW( fileName, FILE_WRITE_DATA|FILE_APPEND_DATA, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 ); int NumberOfBytesWritten; WriteFile( hFile, test, sizeof( test ), NumberOfBytesWritten, 0 ); CloseHandle( hFile ); } //+------------------------------------------------------------------+
Указатели и хэндлы только на long поменять
Комбинатор:
Указатели и хэндлы только на long поменять
Указатели и хэндлы только на long поменять
Для четвёрки не нужно.
А для пятёрки надо смотреть какой терминал.
А, точно, это ж четверка
Спасибо, что то проблема за проблемой...
создаю файл
extHandle[i] = CreateFileW(file_name, F_GENERIC_WRITE, F_FILE_SHARE_READ, 0, F_CREATE_ALWAYS, 0, 0);
Пишет в файл строки в юникоде
extHandle[i] = CreateFileA(file_name, F_GENERIC_WRITE, F_FILE_SHARE_READ, 0, F_CREATE_ALWAYS, 0, 0);
так создаю файл, возвращает дескриптор, пишу в файл, возвращает успешно, возвращает сколько байт записано, но файла нету
нужно строки писать в ANSI, подскажите как это сделать
нашел решение
StringToCharArray()
Посимвольно копирует преобразованную из unicode в ansi строку в указанное место массива типа uchar. Функция возвращает количество скопированных элементов.
в место строки пишу массив в файл, наверное строки в юникоде пишутся, т.к. у меня исходник в юникоде сохранен для мультиязычности (предположение)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Посоветуйте, как записать структуру mql4 в файл используя WriteFile из kernel32.dll
я так понимаю, структуру, надо преобразовать в массив и затем уже записать, но как это сделать... ?
писать каждый элемент структуры в файл не очень хочется.