В разделе 6 руководства описан функционал экспорта инструментов по ODBC. Очень бы хотелось иметь аналог по DDE. Хочется искать плиты в стаканах :)
На мой взгляд DDE гораздо лучше ODBC, странно что его обделили вниманием.
1. Он быстрее, так как осуществляется через shared mem 2. Он позволяет не мучиться с генерацией сигналов об обновлении данных. (В случае через ODBC, к примеру, это означает или использовать триггеры или читать журнал транзакий, что медленнее на несколько порядков)
Пользователь
Сообщений: Регистрация: 21.08.2015
29.11.2019 23:21:17
Цитата
foobar написал: Очень бы хотелось иметь аналог по DDE.
По секрету, можно сделать свой ODBC драйвер, в качестве примера годится (опенсорцный) драйвер от mysql. Там "всего" около 70 апишных функций надо реализовать, не считая, конечно, собственно логики сервера, ака что куда и как рассовывать. Для DDE нужно окно, поэтому сомнительно, что без открытых стаканов сделают, из главного окна квика выводить все и сразу геморрою не оберешься.
Пользователь
Сообщений: Регистрация: 02.07.2015
30.11.2019 05:21:32
Цитата
foobar написал: Очень бы хотелось иметь аналог по DDE.
Как я понял, идея выводить стаканы по DDE без открытия самих стаканов. По факту данные по DDE выводит какое-то окно, так что на практике получится либо просто невидимый стакан, либо одно (невидимое) окно на весь квик, занятое только DDE-экспортом всего и вся.
Пользователь
Сообщений: Регистрация: 02.07.2015
30.11.2019 17:59:27
Цитата
Anton написал: По факту данные по DDE выводит какое-то окно,
Так вроде и с одбц такая же схема, не?
Пользователь
Сообщений: Регистрация: 21.08.2015
30.11.2019 18:16:42
Цитата
Imersio Arrigo написал: Так вроде и с одбц такая же схема, не?
Нет, по ODBC можно даже из консольного приложения вывести (), DDE же в принципе основано на том, что два окна обмениваются сообщениями.
Нет, по ODBC можно даже из консольного приложения вывести ( ), DDE же в принципе основано на том, что два окна обмениваются сообщениями.
Так в windows всё является окном и имеет hwnd.
Пользователь
Сообщений: Регистрация: 29.11.2019
30.11.2019 21:12:18
Вот тут расписано подробно К открытым (равно как и невидимым окнам) это не имеет никакого отношения. Консольные программы тоже могут получить или отправлять DDE-сообщения.
Пользователь
Сообщений: Регистрация: 21.08.2015
30.11.2019 23:11:47
Цитата
foobar написал: Так в windows всё является окном и имеет hwnd.
Нет. Процесс, поток, мьютекс, сокет, файл мэппинг и многое-многое другое не являются окном и не имеют hwnd.
Цитата
foobar написал: К открытым (равно как и невидимым окнам) это не имеет никакого отношения.
Именно: All DDE transactions are conducted by passing certain defined DDE messages between the client and server windows.
Цитата
foobar написал: Консольные программы тоже могут получить или отправлять DDE-сообщения.
Отправлять сообщения могут, никто не мешает. Чтобы сообщения получать, надо создать окно и дергать GetMessage или PeekMessage, причем после первого же вызова одной из этих функций поток станет гуишным (можно проверить, вызвав IsGUIThread). Работать с DDE из консольной программы можно через либу ddeml, которая как раз и создает кучку скрытых окон под ковром.
Пользователь
Сообщений: Регистрация: 02.07.2015
01.12.2019 04:00:04
Цитата
Anton написал: Нет, по ODBC можно даже из консольного приложения вывести
Причем тут консольное? Мы же про Квик говорим, не? А в квике можно запустить экспорт что по ODBC что по DDE только из определенного окна, разве нет?
В смысле для работы ODBC не требуется окна и очереди сообщений. В квике можно стаканы по ODBC выводить, не открывая окон, о чем изначально и речь была, почему по ODBC так можно, а по DDE нельзя. Потому что для DDE окно все равно придется создавать, будь то нынешний стакан или какой-то его невидимый обрезок.
Пользователь
Сообщений: Регистрация: 02.07.2015
01.12.2019 08:07:58
Цитата
Anton написал: В смысле для работы ODBC не требуется окна и очереди сообщений
Это, вроде как, очевидно
Цитата
Anton написал: В квике можно стаканы по ODBC выводить, не открывая окон, о чем изначально и речь была,
Вот как? Научи? Мне не нужно, просто я вижу пункты меню там же где и dde, поэтому считаю что и вывод возможен там же - а это исключительно из открытых таблиц.
Отправлять сообщения могут, никто не мешает. Чтобы сообщения получать, надо создать окно и дергать GetMessage или PeekMessage, причем после первого же вызова одной из этих функций поток станет гуишным (можно проверить, вызвав IsGUIThread). Работать с DDE из консольной программы можно через либу ddeml, которая как раз и создает кучку скрытых окон под ковром.
Ну, всё может быть. Я писал на Java и не думал особо что происходит. В любом случае, я не вижу каких либо проблем для терминала. Там можно найти/сделать того кто будет отвечать и посылать сообщения.
Вот как? Научи? Мне не нужно, просто я вижу пункты меню там же где и dde, поэтому считаю что и вывод возможен там же - а это исключительно из открытых таблиц.
Сервисы - Импорт/Экспорт - Экспорт инструментов по ODBC
Пользователь
Сообщений: Регистрация: 02.07.2015
01.12.2019 12:31:13
Цитата
Anton написал: Чтобы сообщения получать, надо создать окно и дергать GetMessage или PeekMessage
Если не ошибаюсь, очередь сообщений тут не причем.
Во всяком случае у меня работало без нее.
Цитата
foobar написал: Сервисы - Импорт/Экспорт - Экспорт инструментов по ODBC
Никогда не обращал внимания.
Экспортятся прям стаканы?
Ну в таком случае, я думаю, что технически ничего не мешает также экспортить стаканы по DDE.
Пользователь
Сообщений: Регистрация: 21.08.2015
01.12.2019 14:38:24
Цитата
Imersio Arrigo написал: Если не ошибаюсь, очередь сообщений тут не причем. Во всяком случае у меня работало без нее.
С ddeml могло и без нее работать, там внутри делается примерно таким образом (внимание на while в последнем блоке, который и есть "локальный" цикл сообщений)
Уважаемая поддержка QUIK, прокомментируйте, пожалуйста, целесообразность разработки предлагаемом в первом сообщении пожелании
QUIK clients support
Сообщений: Регистрация: 27.01.2015
17.12.2019 08:58:35
Цитата
foobar написал: Уважаемая поддержка QUIK, прокомментируйте, пожалуйста, целесообразность разработки предлагаемом в первом сообщении пожелании
Добрый день. Мы рассмотрим данный вопрос в рамках зарегистрированного пожелание. Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.