Использование DLL

 
Всем привет дорогие форумчане, нужен совет
Хочу сделать копира МТ4-МТ4 есть знакомые шарящие в написании советников и все говорят что без DLL никак
Так вот суть вопроса, возможно ли создание копира без использования DLL?
 
Если с WinAPI дружишь, то без проблем. ИМХО, самый оптимальный вариант - через общую память (FileMapping)
 
Алексей Матросов:
Всем привет дорогие форумчане, нужен совет
Хочу сделать копира МТ4-МТ4 есть знакомые шарящие в написании советников и все говорят что без DLL никак
Так вот суть вопроса, возможно ли создание копира без использования DLL?

конечно, через файлы

 
Делайте сразу на МТ5. Там сокеты есть. А это, как никак, прямое подключение между терминалами.
 

Через файлы конечно можно, сам делал, но есть одно но. Если кто хорошо в теме, то поправьте, а разработчикам не плохо бы пояснение дать.

Имеем следующее:

  1. С большой долей вероятности для работы с файлами используется чистое WinAPI.
  2. Копировщик делаем красиво, то есть открываем совместный доступ к чтению/записи со стороны источников и приемников, множественное число не просто так, мы же делаем не абы что, а путевый продукт, и после этого хэндлы до конца работы не закрываем.
  3. Совместная запись в файл в Windows требует синхронизации (LockFile / UnlockFile), а в mql я аналогов не знаю, но возможность совместной записи есть.
  4. Явная информация о том, что совместная запись в файл потокобезопасна, в документации отсутствует.

Вы как хотите, но я считаю, что пока в официальной документации явно не прописали вопрос потокобезопасности вышеуказанного - это является undefined behaviour.

Вот и остается, или унылый код писать с постоянным переоткрытием файла (со всеми накладными расходами), или dll, или вообще исключить возможность работы с более чем одним источником.

P.S. Троллям разрешаю порезвиться)))

 
Алексей Матросов:
Всем привет дорогие форумчане, нужен совет
Хочу сделать копира МТ4-МТ4 есть знакомые шарящие в написании советников и все говорят что без DLL никак
Так вот суть вопроса, возможно ли создание копира без использования DLL?

Не верьте. DLL - Dynamic Load Library - библиотека динамической загрузки, если по-русски. 

Есть несколько вариантов структуры исполняемого кода, раньше было 3, теперь память экономить перестали и их осталось два: простая и динамическая структуры. Оверлейную теперь не используют, поскольку память не экономят. 

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

Короче, программируйте, как хотите, если хотите программировать,- это довольно увлекательное хобби. 

 
Vladimir Simakov:
Если с WinAPI дружишь, то без проблем. ИМХО, самый оптимальный вариант - через общую память (FileMapping)
Maxim Dmitrievsky:

конечно, через файлы

Ihor Herasko:
Делайте сразу на МТ5. Там сокеты есть. А это, как никак, прямое подключение между терминалами.

Владимир, самых оптимальных не бывает. Оптимальные уже самые. Не издевайтесь над новичком,- лет через 10 он может отреагировать. 

Максим, Игорь: Можно было просто ответить. 

 
Ihor Herasko:
Делайте сразу на МТ5. Там сокеты есть. А это, как никак, прямое подключение между терминалами.

На MT5? Или для MT5. Язык то уже общий или есть разница? Или сокеты только для MT5 терминалов?

 
Алексей Матросов:

На MT5? Или для MT5. Язык то уже общий или есть разница? Или сокеты только для MT5 терминалов?

К сожалению, разница есть и не только в плане сокетов. Функции работы с сокетами имеются только в MQL5. Соответственно, и работают они только в МТ5. В MQL4 их даже Meta Editor не подсвечивает, как иногда это происходит с функциями, которых нет в MQL4.

 
Алексей Матросов:

На MT5? Или для MT5. Язык то уже общий или есть разница? Или сокеты только для MT5 терминалов?

Давайте, сначала, со мною. На МТ5. И не хамить, а то накажу. 

 
Алексей Тарабанов:

Владимир, самых оптимальных не бывает. Оптимальные уже самые. Не издевайтесь над новичком,- лет через 10 он может отреагировать. 

Максим, Игорь: Можно было просто ответить. 

вообще то они как раз просто и ответили, дали ответ по существу, в отличии от:

Алексей Тарабанов:

Не верьте. DLL - Dynamic Load Library - библиотека динамической загрузки, если по-русски. 

Есть несколько вариантов структуры исполняемого кода, раньше было 3, теперь память экономить перестали и их осталось два: простая и динамическая структуры. Оверлейную теперь не используют, поскольку память не экономят. 

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

Короче, программируйте, как хотите, если хотите программировать,- это довольно увлекательное хобби. 

- где нет совершенно ответа на вопрос: "Так вот суть вопроса, возможно ли создание копира без использования DLL?" который подразумевает два варианта ответов "Да" и "Нет", что и будет самыми простыми ответами которые могут быть.

Правильный ответ на вопрос стартера: "Да".

Причина обращения: