![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глючит 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 это мёртвая технология, не стоит себе голову морочить.