begin
{ Make sure this line works correctly }
Unk := CreateRemoteComObject('server1', StringToGUID(MyGUID));
{ If it does, then cast it to a IDispatch }
Disp := Unk as
end
Если этот кусок кода работает, а проблема остается, то Вам требуется шаг за шагом пройти через код клиента и найти, где он дает трещину. Если не сможете этого обнаружить, Вам придется запустить сервер под отладчиком и установить связь с клиентом, чтобы Вы могли произвести отладку рядом со местом, дающем слабину.
DCOM
В чем разница между сокетами, DCOM и OLE Enterprise при использовании их в качестве транспорта?
Nomadic отвечает:
Sockets (TCP/IP)
:• на клиентах и сервере требуется наличие стека TCP/IP;
• не требуется дополнительной настройки клиентов;
DCOM
:• на клиентах и серверах требуется наличие DCOM (входит в состав Windows NT 4.0, для Windows 95 доступен как опция)
• требуется настройка клиентов (DCOM Configuration Utility — DCOMCNFG.EXE);
• встроенная поддержка модели безопасности Windows NT;
• поддержка обратных вызовов (методов);
CORBA
• на клиентах и серверах требуется наличие Common Object Request Broker;
• требуется настройка клиентов;
• поддержка обратных вызовов (методов);
OLE Enterprise:
• на клиентах и серверах требуется наличие OLE Enterprise;
• требуется настройка клиентов;
• поддержка обратных вызовов (методов);
DDE
DDE – передача текста
Delphi 1
Вот я как работаю с Excel:
type
DDEClientConv1.SetLink('Excel','Sheet1');
try
DDEClientConv1.OpenLink;
DDEClientItem1.DDEItem:= 'R1C1';
DDEClientConv1.PokeData(DDEClientItem1.DDEItem, StrPCopy(P, SomeString)));
finally
DDEClientConv1.CloseLink;
end
Как вы можете здесь видеть, свойство DDEItem определяется сервером. Если ваш сервер является приложением Delphi, то DDEItem – имя DDEServerItem. На вашем месте я бы не стал так долго заниматься отладкой DDE-программ. Воспользуйтесь синхронизацией, позволяющей понять при отладке правильность действий.
Управление Program Manager в Win95 с помощью DDE
Delphi 1
Для управления программными группами в Program Manager с помощью DDE мною был использован следующий модуль. За основу был взят код Steve Texeira (sp) из руководства Dephi Developers Guide.
Работает под Win 3.1 и '95.
unit
interface
uses
type
EProgManError = class
TProgMan = class
private
FDdeClientConv: TDdeClientConv;
procedure
function
public
constructor
destructor
Procedure
procedure
procedure
procedure
end
implementation
uses
const
{ DDE-макростроки для Program Manager }
SDDECreateGroup = '[CreateGroup(%s)]';
SDDEShowGroup = '[ShowGroup(%s, 1)]';
SDDEDeleteGroup = '[DeleteGroup(%s)]';
SDDEDeleteItem = '[DeleteItem(%s)]';
SDDEAddItem = '[AddItem(%s, "%s", %s)]';
constructor
begin
inherited
InitDDEConversation;
end
destructor
begin
if
inherited
end
function
Begin
StringAsPchar(Macro);
Result := FDdeClientConv.ExecuteMacro(@Macro[1], False);
End
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT