Скачать MetaTrader 5

Кто использовал аналог функции mql4 FileWrite из WinAPI подскажите.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Как купить продукт в MetaTrader AppStore? Прочитай статью об этом!
Sheer
219
Sheer 2015.11.15 18:59 
Пробовал вот эти две функции:

bool   WriteFile (int hFile, int lpBuffer, int nNumberOfBytesToWrite, int& lpNumberOfBytesWritten[], int  lpOverlapped);

int _lwrite (int handle, string buffer, int bytes); 

Первой не смог даже что-либо записать в файл, я не понимаю некоторые параметры, хотя читал на русском их описание, просто не сталкивался с подобным.

Второй функцией удавалось писать, но там тоже есть сложности,  например при 

 _lwrite (handle,buffer,sizeof(buffer));

записывались не все данные из buffer, а лишь часть, как правильно высчитывать байты?

Еще когда использовал функцию mql4 FileWrite, записывал данные в csv файл, и перечисленные через запятую переменные записывались каждые в свою ячейку, также хочу и с помощью _lwrite, но тут по другому, то есть все переменные для записи нужно поместить в buffer, в таком случае они все помещаются в одну ячейку, возможно нужно использовать что-то вроде /r/n, в общем поясните, заранее спасибо.

Alexandr Bryzgalov
27568
Alexandr Bryzgalov 2015.11.15 19:02  
https://www.mql5.com/ru/articles/1540
Файловые операции через WinAPI
Файловые операции через WinAPI
  • 2008.07.03
  • MetaQuotes Software Corp.
  • www.mql5.com
Исполнительная среда MQL4 основана на концепции безопасной "песочницы": чтение и запись средствами языка разрешены только в определенных папках. Это защищает пользователя MetaTrader 4 от потенциальной опасности испортить важные данные на жестком диске компьютера. Но иногда все же бывает необходимость покинуть безопасную зону. Как это сделать легко и правильно - об этом статья.
Alexey Volchanskiy
16675
Alexey Volchanskiy 2015.11.15 19:05  
Sheer:
Пробовал вот эти две функции:

bool   WriteFile (int hFile, int lpBuffer, int nNumberOfBytesToWrite, int& lpNumberOfBytesWritten[], int  lpOverlapped);

int _lwrite (int handle, string buffer, int bytes); 

Первой не смог даже что-либо записать в файл, я не понимаю некоторые параметры, хотя читал на русском их описание, просто не сталкивался с подобным.

Второй функцией удавалось писать, но там тоже есть сложности,  например при 

 _lwrite (handle,buffer,sizeof(buffer));

записывались не все данные из buffer, а лишь часть, как правильно высчитывать байты?

Еще когда использовал функцию mql4 FileWrite, записывал данные в csv файл, и перечисленные через запятую переменные записывались каждые в свою ячейку, также хочу и с помощью _lwrite, но тут по другому, то есть все переменные для записи нужно поместить в buffer, в таком случае они все помещаются в одну ячейку, возможно нужно использовать что-то вроде /r/n, в общем поясните, заранее спасибо.

1. Читаем в MSDN

_lwrite function

[This function is provided for compatibility with 16-bit versions of Windows. New applications should use the WriteFile function.]

2. В гугле находим пример https://csvlib.codeplex.com/ 

C++ CSV Library
C++ CSV Library
  • csvlib.codeplex.com
Project Description The C++ CSV Filter Library is a simple to use, easy to integrate and extremely efficient and fast CSV in-memory data store processing library. The CSV filter allows for the efficient evaluation of complex expressions on a per row basis upon the loaded CSV store. Download...
Sheer
219
Sheer 2015.11.15 20:12  
Alexey Volchanskiy:

1. Читаем в MSDN

_lwrite function

[This function is provided for compatibility with 16-bit versions of Windows. New applications should use the WriteFile function.]

2. В гугле находим пример https://csvlib.codeplex.com/ 

Можете пояснить как этим пользоваться? Английский плохо знаю, а с++ вообще не знаю.
Alexey Volchanskiy
16675
Alexey Volchanskiy 2015.11.15 21:57  
Sheer:
Можете пояснить как этим пользоваться? Английский плохо знаю, а с++ вообще не знаю.

Да

1. _lwrite обеспечивает совместимость с 16-разрядной версией Windows (3.1 была 16-разр.) Новые программы должны использовать WriteFile. Alexandr Bryzgalov привел пример использования _lwrite.

2. Статью я перводить не буду, вот по русски или гуглом поищите. http://eax.me/winapi-files/

Готовой записи строки с разделителем в win api нет, надо вручную формировать строку и ее записывать. 

Учимся работать с файлами через Windows API | Записки программиста
  • eax.me
Для этого нелегкого дела нам понадобятся следующие процедуры: В Windows для того, чтобы открыть или создать файл, нужно вызвать процедуру, имеющую целых семь аргументов. К счастью, большинство из них приходится использовать крайне редко. Аргумент szName задает имя файла, а dwAccess — желаемый доступ к файлу, обычно это GENERIC_READ...
Комбинатор
15923
Комбинатор 2015.11.15 22:30  
Посмотрите FileUnlimited. Он сыроват конечно, но думаю сгодится. Еще емнип можно пошариться по профилю Сергеева, он этим вроде тоже занимался.
Sheer
219
Sheer 2015.11.15 23:42  

Кто-нибудь может объяснить как использовать WriteFile, или покажите пример использования в mql4. Только без ссылок на сайт microsoft, я там все равно ничего не пойму, нужен наглядный пример в mql4.

Alexandr Bryzgalov
27568
Alexandr Bryzgalov 2015.11.16 19:24  
Sheer:

Кто-нибудь может объяснить как использовать WriteFile, или покажите пример использования в mql4. Только без ссылок на сайт microsoft, я там все равно ничего не пойму, нужен наглядный пример в mql4.

тут уже ничем не помочь )
Alexey Volchanskiy
16675
Alexey Volchanskiy 2015.11.16 19:34  
Alexandr Bryzgalov:
тут уже ничем не помочь )
Ага, учитывая, что на MS такие примеры разжеваны до кашицы.
Sheer
219
Sheer 2015.11.16 19:42  
Alexandr Bryzgalov:
тут уже ничем не помочь )
Alexey Volchanskiy:
Ага, учитывая, что на MS такие примеры разжеваны до кашицы.
Ну не все такие профессионалы как вы, я например не программист, и английский не знаю.
Alexandr Bryzgalov
27568
Alexandr Bryzgalov 2015.11.16 19:45  
Sheer:
Ну не все такие профессионалы как вы, я например не программист, и английский не знаю.

дело не в английском. дело в лени.

я тоже не знаю англицкий.

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий