Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Глючит DDE [D6, WinXP]


Anton B. ©   (2006-01-23 18:14:00) 

Есть DDE сервер (сервер работает нормально,  проверено через Excel).
Но получать данные правильно не удается. Использую стандартные компоненты Delphi: DDEClientConv и DDEClientItem.

Вот код (все просто)

procedure TForm1.FormCreate(Sender: TObject);
Begin

DDeClientConv1.SetLink('ICTS', 'PAIR');

DDeClientItem1.DdeConv := DDEClientConv1;
DDeClientItem2.DdeConv := DDEClientConv1;

DdeClientItem1.DdeItem := 'BID_EUR_USD';
DdeClientItem2.DdeItem := 'ASK_EUR_USD';

End;

procedure TForm1.DdeClientItem1Change(Sender: TObject);
begin
 StringGrid1.Cells[1,1] := DdeClientItem1.Text;
end;

procedure TForm1.DdeClientItem2Change(Sender: TObject);
begin
 StringGrid1.Cells[2,1] := DdeClientItem2.Text;
end;

Проблема в том что в первый раз данные передаются для обоих, но потом событие onChange срабатывает лишь для того кто был обозначен первым, в этом примере это
DdeClientItem1.DdeItem := 'BID_EUR_USD';

Помогите пожалуйста, что я не так делаю?


Digitman   (2006-01-26 08:31:00) [1]

Для начала убедись средствами, например, станд.утилиты DDESPY.EXE в составе MS VisualStudio в том что упомянутые события на самом деле возникают, при том что Делфи-компонент их почемк-то не транслирует в кл.программу.

Если шпион покажет, что дело обстоит именно так, есть резон изучить и прогнать исходники используемых DDE-компонентов под отладчиком пошагово с целью выяснения , где и в каком месте кода компонента происходят "чудеса".

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


Anton B.   (2006-01-25 21:27:00) [2]

да


Digitman   (2006-01-25 09:19:00) [3]

т.е. если изменить порядок присвоения на

DdeClientItem1.DdeItem := 'ASK_EUR_USD';
DdeClientItem2.DdeItem := 'BID_EUR_USD';

то теперь событие будет возникать лишь для 'ASK_EUR_USD' ?
я правильно понял ?


Anton B.   (2006-01-24 23:38:00) [4]

Проблема в том, что это самое приложение никак нельзя подправить или переделать, оно есть и все тут, в нем есть DDE сервер, по которому можно забрать из этого приложения необходимые данные. А этот гребаный DDE компонент в Delphi работает через …

Очень нужно решить эту проблему, pliz help me :(


Digitman   (2006-01-24 17:25:00) [5]


> Anton B.   (23.01.06 23:17) [4]
> Через COM можно получить данные с DDE сервера?


Нельзя.
Но с неменьшим успехом можно получить данные с СОМ-сервера, каковым может являться то самое интересующее тебя приложение, одновременно и в том числе являющееся и DDE-сервером и COM/OLE-сервером.


Stifler   (2006-01-24 17:08:00) [6]

Mastera help, ta ze problema !!! Mozet problema v samom Delphi 6 ?


Anton B.   (2006-01-23 23:17:00) [7]

Через COM можно получить данные с DDE сервера? где можно по подробней это узнать


Eraser   (2006-01-23 23:00:00) [8]


> Anton B.   (23.01.06 21:24) [2]

Ещё как получить. COM в помощь. В Делфи даже для удобства спец. компоненты разработали.


Anton B.   (2006-01-23 21:24:00) [9]

Я согласен, что мертвая, но никаким другим способом мне данные не получить :(


Eraser   (2006-01-23 21:16:00) [10]


> Anton B.   (23.01.06 18:14)

DDE это мёртвая технология, не стоит себе голову морочить.


Наверх

Титульная страница Поиск, карта сайта Написать письмо