Пытался написать dll. Вот исходник основной:
unit Unit1;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ComObj, ActiveX, Project1_TLB, StdVcl, Dialogs, CSDN_TLB;
type
TSpec = class(TAutoObject, ISpec)
protected
procedure ConnectTCS; safecall;
end;
implementation
uses ComServ;
procedure TSpec.ConnectTCS;
Var
TCS: ITCS;
App: ITCS_Application;
begin
CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
TCS:= CreateOLEObject('CSDN.TCS') as ITCS;
if Assigned(TCS) then
App:= TCS.LoginEx('Пупкин', 'хххххххх');
if App=nil then ShowMessage('Не получилось')
else ShowMessage('Получилось');
App:= nil;
TCS:= nil;
CoUninitialize;
//ShowMessage('Ура');
end;
initialization
TAutoObjectFactory.Create(ComServer, TSpec, Class_Spec,
ciMultiInstance, tmApartment);
end.
В ТКС написал следующее:
Sub FormMacro_GetSpecFromINV(TCSActiveModule)
Dim MyObject
Set MyObject = CreateObject("Project1.Spec")
Call MyObject.ConnectTCS()
Set MyObject = Nothing
End Sub
Не сработало:
написал internal DataSet: Cannot perform this operation on an open dataset.
В чем моя ошибка?
P.S. Заметил: спотыкается на строке
TCS:= CreateOLEObject('CSDN.TCS') as ITCS;