WinCC & ActiveX
Eugene; 1.12.04

Probuju polucit dostup k activeX, zapuskaju na vipolnenie kod :


#define GetObjectA GetObject

__object *obj = NULL;
__object *pic = NULL;
__object *ocx = NULL;

VARIANT v;
BSTR bstrText1;

printf("Get PDLRuntime \r\n");
obj = __object_create("PDLRuntime");

if (!obj)
{
printf("obj NULL!!!\r\n");
return;
}

pic = obj->GetPicture("NewPdl0");
if (!pic)
{
printf("pic NULL!!!\r\n");
return;
}

ocx = pic->GetObject("Control1");
if (ocx == NULL)
{
printf("ocx NULL!!!\r\n");
return;
}

bstrText1 = SysAllocString("Variant String");
VariantInit(&v);
v.vt = VT_BSTR;
v.u.bstrVal = bstrText1;

ocx->SetText(4,4,v);
ocx->SetFontSize(14);
ocx->SetFontBold(TRUE);

__object_delete(obj);
__object_delete(pic);
__object_delete(ocx);

}

i polucaju oshibku vo vrema vipolnenija, o nevozmoznosti polucit dostup k PDLRuntime. Podskazite pozalusta, cto mne sdelat ctobi eto rabotalo, v cem precina oshibki ?

Vivod WinCC vo vrema vipolnenija :

Get PDLRuntime
F6dc (49) : general protection fault..
====================================OnErrorExecute====================================
dwErrorCode1: (ThreadId 5396) 1007001
dwErrorCode2: (ThreadId 5396) 4100
szErrorText: (ThreadId 5396) Exception in Action
szErrorTextException: (ThreadId 5396) access violation
szApplicationName: (ThreadId 5396) PDLRuntimeSystem
bCycle: (ThreadId 5396) acycle
szFunctionName: (ThreadId 5396) @b
lpszPictureName: (ThreadId 5396) NEWPDL0
lpszObjectName: (ThreadId 5396) Button8
lpszPropertyName: (ThreadId 5396) (NULL)
dwParamSize: (ThreadId 5396) 12
====================================OnErrorExecute====================================
Re: WinCC & ActiveX
Маслов Дмитрий; 3.12.04

Есть у меня подозрение, что ошибка возникает при работе со строками. Попробуйте выкинуть из скрипта весь код, который работает с типом variant и со строками. Оставьте только установку целого и логического свойства. Если заработает - поймете в чем проблема...