PDA

View Full Version : problems with dynamicCall please help, I can not advance



franco.amato
16th April 2010, 23:21
Hi to all, I'm disperate with this ActiveQt especially calling some com functions with dynamicCall and I don't get any help from this forum.

So I try again:
I have a COM object named PallyCOM.dll
I generated the doc with this code:


m_axobj->setControl("{1AF66B3E-B0D5-4108-80B5-13E429298140}");


QString d = m_axobj->generateDocumentation();

QFile file("file.xml");
if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;

QTextStream out(&file);
out << d;

it generated a xml file. I would call a routine called GetUserData.
The xml file says this:


QVariant GetUserData (QString CardID) [slot]
Connect a signal to this slot:
QObject::connect(sender, SIGNAL(someSignal(QString)), object, SLOT(GetUserData(QString)));
Or call the function directly:
QVariantList params = ...
QVariant result = object->dynamicCall("GetUserData(QString)", params);

But I really don't understand how to call it.
I tried many way and no one works:


QVariantList params;
QStringList userdata;
userdata.append( userId_ );
m_axobj->dynamicCall("GetUserData(QString)", params);
userdata = params.toStringList();

qDebug() << userdata.count(); //it says 0

this routine should return an array of string as the (very poor) doc says:


Function: GetUserData
Parameter: CardID(string/10)
Description: Get User Data
Return values: ArrayList

I realy don't understand how to call such routine and I need some help.
I also tried:


QVariantList list = m_axobj->dynamicCall("GetUserData(QString)","a string value"); //doesn't work

and


QVariant list = m_axobj->dynamicCall("GetUserData(QString)","a string value"); //doesn't work
QStringList userdata = list.toStringList();


I always get an empty list.

Please help me, I don't know where I'm wrong.

The returned value should be a QString array so:


CardID(string/10)
OverWrite(0: no overwrite. If ID is already registered, return with result 06.,1: overwrite.)
idxDesignation
idxDepartment
FirstName(string /15)
LastName(string /15)
idxGroup (integer/0~255)
Status(1 : Activate, 0 : Deactivate)
WorkMode(0:finger+pass ,1:finger,2:pass,3:finger or pass,4:Only Crad,5:Only from external Reader,6:Matching on Mifare card)
WorkTimeStart()
WorkTimeEnd()
EmployeeID
RegisterMode( Finger =1, Password = 2, Finger and Password = 3, Card=4, Max=4)
CheckExpire
ExpireDateStart
ExpireDateEnd
Password(string/10)
NF(Number of fingerprint data per user Max. 2)
TemplateSize
FingerData (byte,User Fingerprint data total size depends on the number of fingerprints registered per user)

And I always get an empty list
Best Regards