![]() |
|
#5
|
||||
|
||||
![]() Код, что я отправил - работаюший. Но двихок сервера его изменил и сделал неверным, по этому я его отправляю еще раз...
Код:
procedure TForm1.FormCreate(Sender: TObject); var Mem : _MEMORYSTATUS; RetMem : Cardinal; //R:HRESULT; B:IOPCBrowseServerAddressSpace; Ser:IOPCServer; I:IDispatch; pEnum:IEnumString; S:String; pS,ItemID : POleStr; L:Longint; begin //R := CoInitializeEx(nil,COINIT_APARTMENTTHREADED); //OutputDebugString(PChar(Format('%d',[R]))); GlobalMemoryStatus(Mem); RetMem := Mem.dwAvailVirtual; OutputDebugString(PChar(Format('Свободная память: %d',[RetMem - Mem.dwAvailVirtual]))); //CoGetMalloc(1, Ser); Ser:=CreateComObject(ProgIDToClassID('dOPCSim.Kassl.Simulation')) as IOPCServer; GlobalMemoryStatus(Mem); OutputDebugString(PChar(Format('Память после создания сервера: %d',[RetMem - Mem.dwAvailVirtual]))); (*Ser.QueryInterface(IID_IOPCBrowseServerAddressSpace,B); GlobalMemoryStatus(Mem); OutputDebugString(PChar(Format('Память после создания В: %d',[RetMem - Mem.dwAvailPhys]))); B.BrowseOPCItemIDs(OPC_BRANCH{OPC_LEAF},'',VT_EMPTY,0,pEnum); GlobalMemoryStatus(Mem); OutputDebugString(PChar(Format('Память после создания перечисления: %d',[RetMem - Mem.dwAvailPhys]))); //OutputDebugString(PChar(Format('%d',[R]))); //CoTaskMemFree(pEnum); {pEnum.Next(1,pS,@L); S := pS; OutputDebugString(PChar(Format('%s : %d',[S,L]))); B.GetItemID(pS,ItemID); OutputDebugString(PChar(Format('%s',[ItemID]))); pEnum.Next(1,pS,@L); S := pS; OutputDebugString(PChar(Format('%s : %d',[S,L]))); B.GetItemID(pS,ItemID); OutputDebugString(PChar(Format('%s',[ItemID])));} B := Nil;*) { CoGetMalloc(1, cntMalloc); if Assigned(ppServerStatus.szVendorInfo) then cntMalloc.Free(ppServerStatus.szVendorInfo); if Assigned(ppServerStatus) then cntMalloc.Free(ppServerStatus);} //Ser.; Ser := Nil; GlobalMemoryStatus(Mem); OutputDebugString(PChar(Format('Память в конце: %d',[RetMem - Mem.dwAvailVirtual]))); //CoUninitialize; end; |