Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DDE при помощи Delphi, Оно вообще работает или нет? 
:(
    Опции темы
mikleN
Дата 26.7.2004, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



Уважаемый ALL.
Помогите, pls, осилить DDE при помощи Delphi.
У меня есть внешняя программа, которая отдает свои данные Excel_ю.
Мне нужно чтобы она отдавала бы их мне. Я имитирую сервер DDE Excel_я.
Программа соединяется, но через пару секунд пишет, что не может отослать данные, так как формат не совпадает. А где там формат устанавливать и вообще его видеть, я не могу всосать. Использую компонент TDdeServerItem, пытался пристроить TDdeServerConv, но вроде он и не нужен.
Пытался полезть в Windows API, но там так наворочено, сразу и не понять.
Спасибо.
PM MAIL   Вверх
spp2
Дата 26.7.2004, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



Безусловно работает, но для доступа к данным внешнего приложения надо читать его документацию. В твоем случае и это не обязательно. Раз Excel с ним коннектится, то можно посмотреть как. Это может быть реализовано:
1. через формулы DDE
2. через скрипт
Т.о. тебе надо выяснить DdeService, DdeTopic, записать их в ClientConv1,
сделать DdeClientConv1.OpenLink и RequestData(const Item: string): PChar; для приема данных или PokeData(Item: string; Data: PChar): Boolean; для отправки
PM MAIL   Вверх
x77
Дата 26.7.2004, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



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


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
mikleN
Дата 27.7.2004, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



Спасибо. Но мне кажется, я не совсем понят. Мне не нужно писать клиента DDE. Мне нужно написать сервер DDE, который имитирует сервер Excel_я.
Цитата
Т.о. тебе надо выяснить DdeService, DdeTopic, записать их в ClientConv1,
сделать DdeClientConv1.OpenLink и RequestData(const Item: string): PChar;

Я знаю DdeService, DdeTopic и я их имитирую. Внешнюю программу, данные из которой мне надо доставать по DDE, устраивают эти данные и она соединяется и дальше вероятно, пытается делать Poke, но мой сервер очевидно не готовит прием в требуемом формате, так как я его не знаю. Вот. и не получается у меня его узнать.
Спасибо.
PM MAIL   Вверх
spp2
Дата 27.7.2004, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



Цитата(mikleN @ 26.7.2004, 00:42)
У меня есть внешняя программа, которая отдает свои данные Excel_ю.
Мне нужно чтобы она отдавала бы их мне. Я имитирую сервер DDE Excel

Я что-то не въезжаю кто у тебя клиент, кто сервер. Хотя в случае с DDE это достаточно условно. ClientConv1 с успехом справляется как с приемом так и с передачей. Не нравится ClientConv1 бери ServerConv1, ничего не изменится.
По поводу формата данных совершенно недостаточно информации.
Была у меня одна заморочка с внешней программой под названием FIX32 который в начало вставлял символы нецензурные. Так чтобы выяснить это пришлось побайтно смотреть что он шлет.
PM MAIL   Вверх
mikleN
Дата 27.7.2004, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



Привет. Это я.
Цитата
Я что-то не въезжаю кто у тебя клиент, кто сервер. Хотя в случае с DDE это достаточно условно. ClientConv1 с успехом справляется как с приемом так и с передачей. Не нравится ClientConv1 бери ServerConv1, ничего не изменится.

Клиент - это та внешняя программа. Сервер - это Excel или та программулька, которую я должен сделать. Взял я ServerConv1. Подобрал я DdeService, DdeTopic на которые внешняя программа правильно реагирует, думая что имеет дело с Excel_ем.
Цитата
По поводу формата данных совершенно недостаточно информации.
Вообще этот текст и целые числа.
Цитата
Была у меня одна заморочка с внешней программой под названием FIX32 который в начало вставлял символы нецензурные. Так чтобы выяснить это пришлось побайтно смотреть что он шлет.

Видимо это удалось сделать только через Windows API? Не нашел я в Delphi возможности так читать данные, не используя вызовы API.
Спасибо.
PM MAIL   Вверх
mikleN
Дата 28.7.2004, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



wow.gif Не бросайте, PLS, одного то в борьбе с Excel_ем. При помощи API вызовов выяснил я название формата, в котором внешняя программа отдает свои данные Excel_ю. Ничего оригинального, формат называется XlTable. Данные достать тоже удалось, только не читабельны они. Вот, а теперь, подскажите, пожалйста, где я могу узнать сущность этого формата. Подозреваю, что он или совпадает или очень близок с основным форматом, в котором Excel хранит свое барахло. Так, вот где я могу его взять. Спасибо огромное.
PM MAIL   Вверх
spp2
Дата 16.8.2004, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



Цитата(mikleN @ 27.7.2004, 22:46)
Видимо это удалось сделать только через Windows API? Не нашел я в Delphi возможности так читать данные, не используя вызовы API.


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

Сейчас у меня предвидится пару дней относительно свободных, так что если еще не решена проблема могу посмотреть внимательней. Кидай мне на мыло файл Excel и кусок кода, где заминка. Полноценного анализа не обещаю, поскольку не будет клиента, но чем смогу...

PM MAIL   Вверх
mikleN
Дата 17.8.2004, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



Спасибо боьшое за ответ.
Цитата(spp2 @ 16.8.2004, 14:21)
Все гораздо проще. Если удается коннектиться и получать данные, то их можно сохранить в переменной, которую потом анализировать стандартными способами или сохранять в файл.

на момент вопроса данные я получал. ТОлько они были в формате, который я не мог понять - т.е. он былне читабельным и назывался XLTable. нашел я в сети опп=исание форматат и смог извлечь из потока нужные мне данные.
Спасибо.
Цитата(spp2 @ 16.8.2004, 14:21)
Сейчас у меня предвидится пару дней относительно свободных, так что если еще не решена проблема могу посмотреть внимательней. Кидай мне на мыло файл Excel и кусок кода, где заминка. Полноценного анализа не обещаю, поскольку не будет клиента, но чем смогу...

Это не файл Excel - я тоже вначале думал, что этот формат совпадает с форматом Excel. Но это чуть другое - упрощен слегка. Но спаибо, проблема решена и формат просчтитан. Если вдруг вам нужны описания форматов то могу дать ссылку.
Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.