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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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