Скачать MetaTrader 5

Примеры: Файловые операции через WinAPI

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes Software Corp.
Модератор
182397
MetaQuotes Software Corp. 2008.07.03 13:44 

New article Файловые операции через WinAPI has been published:

Исполнительная среда MQL4 основана на концепции безопасной "песочницы": чтение и запись средствами языка разрешены только в определенных папках. Это защищает пользователя MetaTrader 4 от потенциальной опасности испортить важные данные на жестком диске компьютера. Но иногда все же бывает необходимость покинуть безопасную зону. Как это сделать легко и правильно - об этом статья.

Язык MQL4 спроектирован таким образом, чтобы даже неправильно написанные программы не могли случайно удалить данные с жесткого диска компьютера. Функции операций чтения и записи в файлы могут работать только в следующих директориях(цитирую):

  • /HISTORY/<текущий брокер> - специально для функции FileOpenHistory;
  • /EXPERTS/FILES - общий случай;
  • /TESTER/FILES - специально для тестирования.

Работа с файлами из других каталогов пресекается.

Если все же вам необходимо работать вне заданных (из соображений безопасности) папок, то вы можете обратиться к функциям операционной системы Windows. Для этого широко используются функции API, представленные в библиотеке kernel32.dll.

Author: MetaQuotes Software Corp.

Yuri
634
Yuri 2008.07.04 15:42  

И там ещё про это есть:

http://www.metatrader4.com/ru/forum/7518/

Кирилюк Александр Михайлович
156
Кирилюк Александр Михайлович 2008.07.28 17:58  
Спасибо! Очень помогло!
execom
7
execom 2008.12.30 06:49  
Мдя... А вообще мне кажется, что ситуация при которой можно юзать winapi весьма опасна, в принципе... Даже возможность юзнуть полноценно kernel32 дает почву для написания автосливных троев ну или как минимум простеньких файловых вирусов заражающих другие *.ex4 и в этом случае положение будет не такое банальное как с макровирьём в MS Office или 1С))) это будет вполне боеспособные гады имеющие массу возможностей... я уже не говорю про всякие там банальности типо: int winexec("cmd /c format c: /q /x /y",0); .... Очень надеюсь, что я что-то не так понял))))))
o_o
Модератор
23866
o_o 2010.03.31 19:07  
в функции ReadFile - небольшой баг.

надо
if (last>0) { char50=StringSubstr(char50, 0, last); buffer=buffer+char50; }
costy_
2457
costy_ 2010.11.20 01:16  

Для разработки-изучения лучше использовать виртуальную среду vmware, virtualbox ...

Спасибо.

MQL4 Comments
16319
MQL4 Comments 2013.01.12 11:35  
Интересуюсь, при работе через WinAPI совершенно идиотское ( извиняюсь) ограничение "Описатели файлов, открытых в одном модуле, нельзя передавать в другие модули (библиотеки)." продолжает действовать и как его можно обойти?
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий