![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
mikleN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 28.4.2004 Репутация: нет Всего: нет |
Уважаемый ALL.
Помогите, pls, осилить DDE при помощи Delphi. У меня есть внешняя программа, которая отдает свои данные Excel_ю. Мне нужно чтобы она отдавала бы их мне. Я имитирую сервер DDE Excel_я. Программа соединяется, но через пару секунд пишет, что не может отослать данные, так как формат не совпадает. А где там формат устанавливать и вообще его видеть, я не могу всосать. Использую компонент TDdeServerItem, пытался пристроить TDdeServerConv, но вроде он и не нужен. Пытался полезть в Windows API, но там так наворочено, сразу и не понять. Спасибо. |
|||
|
||||
spp2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.6.2004 Репутация: нет Всего: нет |
Безусловно работает, но для доступа к данным внешнего приложения надо читать его документацию. В твоем случае и это не обязательно. Раз Excel с ним коннектится, то можно посмотреть как. Это может быть реализовано:
1. через формулы DDE 2. через скрипт Т.о. тебе надо выяснить DdeService, DdeTopic, записать их в ClientConv1, сделать DdeClientConv1.OpenLink и RequestData(const Item: string): PChar; для приема данных или PokeData(Item: string; Data: PChar): Boolean; для отправки |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
я под 2000 виндами наткнулся на одну неприятную фишку. по умолчанию сервисы для обслуживания DDE - запросов, в т.ч. сетевых, отключены в силу своей древности. тебе придётся это учитывать при установке проги на другую машину, может быть так, что работающая прога просто не сможет инициализировать DDE.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
mikleN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 28.4.2004 Репутация: нет Всего: нет |
Спасибо. Но мне кажется, я не совсем понят. Мне не нужно писать клиента DDE. Мне нужно написать сервер DDE, который имитирует сервер Excel_я.
Я знаю DdeService, DdeTopic и я их имитирую. Внешнюю программу, данные из которой мне надо доставать по DDE, устраивают эти данные и она соединяется и дальше вероятно, пытается делать Poke, но мой сервер очевидно не готовит прием в требуемом формате, так как я его не знаю. Вот. и не получается у меня его узнать. Спасибо. |
|||
|
||||
spp2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.6.2004 Репутация: нет Всего: нет |
Я что-то не въезжаю кто у тебя клиент, кто сервер. Хотя в случае с DDE это достаточно условно. ClientConv1 с успехом справляется как с приемом так и с передачей. Не нравится ClientConv1 бери ServerConv1, ничего не изменится. По поводу формата данных совершенно недостаточно информации. Была у меня одна заморочка с внешней программой под названием FIX32 который в начало вставлял символы нецензурные. Так чтобы выяснить это пришлось побайтно смотреть что он шлет. |
|||
|
||||
mikleN |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 28.4.2004 Репутация: нет Всего: нет |
Привет. Это я.
Клиент - это та внешняя программа. Сервер - это Excel или та программулька, которую я должен сделать. Взял я ServerConv1. Подобрал я DdeService, DdeTopic на которые внешняя программа правильно реагирует, думая что имеет дело с Excel_ем.
Видимо это удалось сделать только через Windows API? Не нашел я в Delphi возможности так читать данные, не используя вызовы API. Спасибо. |
||||||
|
|||||||
mikleN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 28.4.2004 Репутация: нет Всего: нет |
![]() |
|||
|
||||
spp2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.6.2004 Репутация: нет Всего: нет |
Все гораздо проще. Если удается коннектиться и получать данные, то их можно сохранить в переменной, которую потом анализировать стандартными способами или сохранять в файл. Сейчас у меня предвидится пару дней относительно свободных, так что если еще не решена проблема могу посмотреть внимательней. Кидай мне на мыло файл Excel и кусок кода, где заминка. Полноценного анализа не обещаю, поскольку не будет клиента, но чем смогу... |
|||
|
||||
mikleN |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 28.4.2004 Репутация: нет Всего: нет |
Спасибо боьшое за ответ.
на момент вопроса данные я получал. ТОлько они были в формате, который я не мог понять - т.е. он былне читабельным и назывался XLTable. нашел я в сети опп=исание форматат и смог извлечь из потока нужные мне данные. Спасибо.
Это не файл Excel - я тоже вначале думал, что этот формат совпадает с форматом Excel. Но это чуть другое - упрощен слегка. Но спаибо, проблема решена и формат просчтитан. Если вдруг вам нужны описания форматов то могу дать ссылку. Спасибо. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |