QString and BSTR
-
it work correctly
do you what i want to do?
i have a .net dll now i want to write a program for it
i use dumpcpp to use it , it works correctly and this functions work correctly too
but when i send a text of other languages like persian to this dll it show me ???? in replace of my text -
!http://www.pic.iran-forum.ir/images/81rzhse7v2t3wujmtb1.jpg(error)!
[quote author="Gerolf" date="1316008510"][quote author="kitten" date="1316007780"]i use this but it get me error again
@void _a[] = {(void)&qax_result, (void*)&Row, (void*)&Col, (void*)test};@
it get me error on this file
qatomic_windows.h
on function
@inline bool QBasicAtomicInt::ref()@[/quote]Which error message do you get???
this is just a parameter assignement, nothing else[/quote]
-
which is the call stack?
-
what do you mean by call stack?
-
In Visual Studio is: Debug -> Windows -> Call Stack
-
this is my call stack when i got error
!http://www.pic.iran-forum.ir/images/vpo7zgu8y0gdpbw6id4l.jpg(call stack)! -
[quote author="kitten" date="1316008652"]it work correctly
i use dumpcpp to use it , it works correctly and this functions work correctly too
but when i send a text of other languages like persian to this dll it show me ???? in replace of my text
[/quote]What work correctly ? When your program crashes ?
Also for persian and arabic conversion, maybe "PAText wiki":http://developer.qt.nokia.com/wiki/QPlugs_PAText_Add_Persian_and_Arabic_support_to_WindowsCE_Mobile_applications will help you -
it is generated with dumpcpp
if i use the default it work corrctly on english language
but in persian language it doesn't work correctly -
How do you enter persian text?
The shown call stack is too short, please copy it out of the call stack window and post it as text. -
@> QtCored4.dll!QBasicAtomicInt::ref() Line 319 + 0x8 bytes C++
QtCored4.dll!QString::QString(const QString & other={...}) Line 729 + 0x51 bytes C++
QtCored4.dll!v_construct<QString>(QVariant::Private * x=0x0030f4b0, const void * copy=0x0070c05c, QString * formal=0x00000000) Line 117 + 0x2a bytes C++
QtCored4.dll!construct(QVariant::Private * x=0x0030f4b0, const void * copy=0x0070c05c) Line 81 + 0xf bytes C++
QtGuid4.dll!construct(QVariant::Private * x=0x0030f4b0, const void * copy=0x0070c05c) Line 182 + 0x12 bytes C++
QtCored4.dll!QVariant::create(int type=10, const void * copy=0x0070c05c) Line 1391 + 0x11 bytes C++
QtCored4.dll!QVariant::QVariant(int typeOrUserType=10, const void * copy=0x0070c05c) Line 1670 + 0x1f bytes C++
new qt finger.exe!QAxBase::internalInvoke() + 0x43c bytes
new qt finger.exe!QAxBase::qt_metacall() + 0x19f bytes
new qt finger.exe!QAxWidget::qt_metacall() + 0x41 bytes
new qt finger.exe!zkemkeeper::CZKEM::WriteLCD(int Row=5, int Col=5, const QString & Text={...}) Line 4828 C++
new qt finger.exe!newqtfinger::newqtfinger(QWidget * parent=0x00000000, QFlags<enum Qt::WindowType> flags={...}) Line 13 + 0x31 bytes C++
new qt finger.exe!main(int argc=1, char * * argv=0x022164a8) Line 6 + 0x17 bytes C++
new qt finger.exe!WinMain(HINSTANCE * instance=0x00890000, HINSTANCE__ * prevInstance=0x00000000, char * __formal=0x006f5eae, int cmdShow=1) Line 131 + 0x12 bytes C++
new qt finger.exe!__tmainCRTStartup() Line 574 + 0x35 bytes C
new qt finger.exe!WinMainCRTStartup() Line 399 C
kernel32.dll!76e733ca()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!778f9ed2()
ntdll.dll!778f9ea5()
@ -
i think it isn't about persian
because when i use this conversion english does'nt work too -
How is the persian text entered?
how does zkemkeeper::CZKEM::WriteLCD(...) look like? -
this is my function i want to use it
@
inline bool CZKEM::WriteLCD(int Row, int Col, const QString& Text){
bool qax_result;
QString st("mil");
BSTR test = SysAllocString(st.utf16());
_bstr_t te(test);
void _a[] = {(void)&qax_result, (void*)&Row, (void*)&Col, (void*)test};
qt_metacall(QMetaObject::InvokeMetaMethod, 244, _a);
SysFreeString(test);
return qax_result;
}
@and this is a function generated with dumpcpp
@inline bool CZKEM::WriteLCD(int Row, int Col, const QString& Text)
{
bool qax_result;
void _a[] = {(void)&qax_result, (void*)&Row, (void*)&Col, (void*)&Text};
qt_metacall(QMetaObject::InvokeMetaMethod, 244, _a);
return qax_result;
}@i am changing the function
-
Looks like the function needs a QString, why do you manually change the QString to BSTR? QAxXXX uses Qt datatypes.
-
because when i send a persian text it doesn't show it correctly on the lcd
or when i want to get information from it via this dll it does'nt show me anything
i think qStrong can't work well here
i don't know why