我嘗試從Indy TCP服務器線程連接到(Uni)DDE服務器。 從正常的應用程序我可以連接,並可以獲取/設置任何PLC變量。德爾福:來自Indy TCPServer的DDE調用線程
但是,當我從Indy線程(從Execute(AThread:TIdPeerThread)事件)使用相同的命令時,SetLink命令失敗。
procedure ReadDDE(AppPath, Service, Topic, Cmd: string; out Eredmeny : string; out HibaSzint : string);
var
DDE: TDDEClientConv;
pc : PChar;
begin
Eredmeny := '';
HibaSzint := '';
DDE := TDDEClientConv.Create(nil);
try
DDE.ConnectMode := ddeAutomatic;
DDE.ServiceApplication := AppPath;
DDE.FormatChars := False;
HibaSzint := 'SetLink';
if DDE.SetLink(Service, Topic) then begin
HibaSzint := '';
pc := DDE.RequestData(PChar(Cmd));
Eredmeny := StrPas(pc);
StrDispose(pc);
end;
finally
DDE.Free;
end;
end;
也許DDE正在使用Windows消息,或者其他東西不是線程安全的,或者在線程級別上不可捕獲?
感謝這方面有任何信息: DD
你爲什麼要使用DDE? DDE是Win16的迴歸?! – Lloyd 2013-02-25 12:14:58
我只有這個接口... :-((Unitronics) – durumdara 2013-02-25 12:18:11