Начат

Cleverence SMART и Delpi

sirtigis 3 года назад обновлен Oleg I. Afanasyev 3 года назад 14

Здравствуйте! Есть прекрасное приложение написанное  на Delphi. Хотелось бы в него получать данные из Mobile Smart  сервера. Есть ли примеры такого взаимодействия?  Можете дать ссылки или прислать исходники?

Начат

Добрый день,

В статье https://www.cleverence.ru/support/category:604/ описаны способы интеграции, так же внизу статьи справочные материалы которые вам пригодятся.

Там описаны общие методы.  То есть придется изучать, как  в Delphi например подключаться через REST API.  Экспериментировать, идти методом проб и ошибок.  А хотелось бы примеров уже готовых программ или работающего кода как из Delphi прочитать какое-то поле в конкретном документе на сервере SMART.  


На Visual Studio C# я такие программы нашел.  Но к сожалению разработанные для него dll не работают как надо в Delphi.       Если готовых примеров нет - придется делать обмен данными через MS SQL.    Наверное так будет  быстрее всего. К счатью хотя коннектор к MS SQL не надо писать. 

Реализация REST в Delphi - это реализация обыкновенных GET/POST запросов.

Универсальных вариантов интеграции не существует априори.


Разница в использовании DLL для Delphi и C++/C# (абсолютно не важно в чьей реализации - Microsoft/ Borland (Embarcardero)) только в порядке передачи параметров.


И вообще, что за любовь к методике "нашел на просторах интернета готовый модуль, вставил, работает"? А вдруг там троян?))))

Нет готовый модуль мне не нужен.  Просто в c#  я нашел кусок кода который работал  и прекрасно получал данные с документа SMART.  

var connector = new Cleverence.Warehouse.StorageConnector(); 

connector.SelectCurrentApp("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5");

var Document = connector.GetDocument('123');

На Delphi похожий код не проходит.  Создаю элемент ActiveX из библиотеки Terminal.Connector.

Помещаю на форму. То есть по идее создаю новый экземпляр, так же как и в C# командой new. Методы  и функции у него те же самые. Но теперь работают только первые две строчки.

На третьей ругается, что несовместимы типы  IDispatch  и String.  То есть так же как в C# я к документу обратиться уже не могу.   Сейчас сижу разбираюсь как сделать из строки переменную понятную функции GetDocument.

Прекрасно работает.

Нужно просто знать как это пишется на Delphi и понимать, что тип переменных должен быть OLEVariant.

fServer:=CreateOleObject('Cleverence.Warehouse.StorageConnector');

Этот код не работает. Программа на Delphi не видит такого OLE  объекта, выдает ошибку.  Был бы рабочий пример, я бы понял, как правильно подключить библиотеку для этого кода чтобы этот код сработал. Примеры сразу отбрасывают кучу вопросов. А так остается эксперименты и чтение документации, работа через созданный ActiveX. 

Ну у меня собственный написанный Delphi-конннектор и все прекрасно работает.

Не нужно использовать Active-X. Нужно правильно описывать переменные.

Ну то есть мне тоже надо написать свой коннектор, я правильно понимаю?  Учитывая что работа одноразовая, сильно не хочется изобретать велосипед.   Наверное  быстрее организовать обмен данных между Delphi и SMART через готовый MS SQL коннектор. Но пока время есть, еще поэкспериментирую, почитаю доки по Delphi.   Обычно с  OLE у меня проблем d Delphi не было никогда.  Все методы работали без извращений и без обращения к переменным через интерфейс.  Но в этом случае видимо опались сложные OLE- объекты. Так просто с ними не поработаешь. 

У меня была программа прекрасно рабjтающая на C# с SMART.  Но начальник захотел сделать такие в ней изменения, что без кучи готовых VCL компонентов я буду год работать. Из избушки сделать небоскреб.   Все-таки Delphi дает немалое ускорение в разработке, если нужен сложный и многоуровневый интерфейс.  Придется изучать доки от Delphi.   

Какая разница на чем писать?

Не понимаю, в чем Delphi дает ускорение перед C#?

Программисту перпендикулярно на чем писать - на Algol/PL1/Pascal/Delphi, C/C++/C#, Assembler или на куче других языков.

Выбор инструмента диктуется только текущими задачами.

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


Если нет - то приходится работать в  среде, где другие для тебя создали эти шаблоны и выложили их на всеобщее пользование.   Иначе будешь писать шаблоны сам до второго пришествия.  

Для работы с базами данных существует куча готовых фреймвоков.

Вот, платформа 1С, предоставляет великолепные инструменты для написания любой учетной системы на без разницы сколько рабочих мест. Даже кластеризацию и рапределенку поддерживает.

Ну я тоже начинаю подумать, что надо переходить на 1C. Там тоже готовых шаблонов, выложенных в сеть навалом, как и  в Delphi. И форумы прекрасные.  Но пока пугает то, что придется  заново все изучать, с нуля.  

Чего там изучать? Паскаль совмещенный с SQL, только на русском языке.

Сервис поддержки клиентов работает на платформе UserEcho