1

Тема: Двусторонний обмен QUIK <-> Delphi

Потребности, примерно, такие:
1) прога на Дельфях стучится в Квик по таймеру или нажатию кнопки, ей дают массив котировок (через DDE, например)
2) прога этот массив обсчитывает и возвращает Lua-скрипту несколько параметров. Тот их держит в памяти, пока Квик не выключат, и использует для расчета индикаторов на графике
3) обмен через файлы не предлагать!

Если такое возможно в принципе, то ищу того, кто возьмётся сделать на заказ.

2

Re: Двусторонний обмен QUIK <-> Delphi

Dimitrym,

вариантов много.

1. Где-то на этом сайте админ выкладывал процесс написания дллки на паскале
2. Где-то на этом сайте кто-то хвастался обменом через tcp
3. Где-то в интернете ищете библиотеки для обмена через память, поддержка для которых есть в lua. Пример ZeroMQ - библиотека очередей сообщений
4. Используете внешний ком-сервер в качестве передаточного звена. Excel или Amisharp
5. Sockets. Похоже на п.3
6. Pipe. Если сможете научить его быть двусторонним. Не всегда это возможно.
7.......
8......

3

Re: Двусторонний обмен QUIK <-> Delphi

А можно поподробней требования к алгоритму...? Как вариант по одному из событий (я предпологаю в любом случае это както к событиям будет привязано) скрипт обращается к библиотеке, а там необходимость обработки можно реализовать через флаги. Вот ICQ 688 186 491, ато может я неособо понятно объяснил)

4

Re: Двусторонний обмен QUIK <-> Delphi

Первоочередная задача не в том, что "скрипт обращается к библиотеке", а чтобы внешняя программа обратилась к скрипту. Событие - в программе, обработка - в Квике.

5

Re: Двусторонний обмен QUIK <-> Delphi

Я понял. Тут надо документы покрить...! Я немного о другом подходе, в библиотеке также можно реализовать и окно и кнопки и вобще все что угодно... и оттуда управлять через флаги. Внешне разницы не будет, и по времени по идее не должно.
В любом случае привязыватся к событиям квика, так как он на внешние события практически не реагирует...!
Кстати как извращенный вариант, отправлять заведомо неправильную заявку, и организовать обмен через параметры!)) Но это так...,) А вобще реально тема с библиотекой!

6 (2015-12-14 12:54:27 отредактировано korovin)

Re: Двусторонний обмен QUIK <-> Delphi

Dimitrym, вопрос: вы ищите среди тех, кто отписался в теме, или среди тех, кто отписался на почту?

7

Re: Двусторонний обмен QUIK <-> Delphi

ищу среди тех, кто знает, как это можно сделать

8 (2015-12-27 14:56:22 отредактировано GSergey2005)

Re: Двусторонний обмен QUIK <-> Delphi

Всем доброго времени суток!
Вот примерно так в коде выглядит то о чем я говорил...!
При запуске откроется два окна одно форма Delphi (создается при загрузке библиотеки), второе в QUIK таблица, в таблице ячейки +/-/Версия - кликабельные.

https://static.wixstatic.com/media/58b8ef_fb34dd64e3394b52894444dfb036ed3e.png/v1/fit/w_1127,h_532/58b8ef_fb34dd64e3394b52894444dfb036ed3e.png

9 (2015-12-27 00:11:37 отредактировано GSergey2005)

Re: Двусторонний обмен QUIK <-> Delphi

Это нужно распаковать в QUIK и запустить "Table1.lua"
TestDLL.rar http://ad-file.com/86cb7Hhpt

10

Re: Двусторонний обмен QUIK <-> Delphi

s_mike пишет:

4. Используете внешний ком-сервер в качестве передаточного звена.

А можно ли без передаточного звена, а чтобы сама прога выступала как локальный COM-сервер, а Lua-скрипт к нему цеплялся и через проверку текущих значений некоторых полей (ок, назовём их флаги) вызывал соответствующие методы того COM-объекта, который в этой проге живёт?

11 (2016-01-12 23:42:38 отредактировано GSergey2005)

Re: Двусторонний обмен QUIK <-> Delphi

Реализовать COM в программе легко... но тогда получется опятже три звена ( LUA + DLL в которой реализован клиент ) + прога, ну или в других комбинациях, это от фантазии зависит!))
По ссылке выше я выкладывал пример прямого двустороннего обмена с прогой, но она реализована в виде библиотеки которая запускается скриптом. Вот тут с помощью COM, можно вынести окно приложения из библиотеки, хотя смысл в этом наверное мало если использовать одну прогу с одним скриптом.

12

Re: Двусторонний обмен QUIK <-> Delphi

Вариант с запуском формы из скрипта имеет один существенный недостаток: при закрытии Квика закрывается и форма тоже. Потребность же именно в том, что приложение живёт своей жизнью, выполняет некие расчеты, а при необходимости просит у Квика свежих данных. Судя по отсутствию ответов, реализовать передачу запросов и параметров от проги в Квик невозможно. Поэтому хочу купить две болванки: прогу с COM-объектом и DLL, который запускается из LUA, цепляется к этому объекту и берёт нужные параметры оттуда своими функциями. Жду предложений