|
I've tried this way:
<br />
char *filename;<br />
filename = new char [x];<br />
_tcscpy(filename, __filepath);<br />
And when I compile the code, this error occurs:
<br />
error C2664: 'wcscpy' : cannot convert parameter 1 from 'char *' to 'unsigned short *'<br />
Houari
|
|
|
|
|
u try this way
TCHAR *filename;
filename = new TCHAR[x];
_tcscpy(filename, __filepath);
nave
|
|
|
|
|
houari_id wrote: char *filename;
filename = new char [x];
With Unicode, use wchar_t instead.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
No, both data type TCHAR and wchar_t are not working, this error still there for both:
<br />
cannot convert parameter 1 from 'unsigned short *' to 'const char *'<br />
Or is it something wrong with my embedded VC++ ?
Houari
|
|
|
|
|
Are you still trying to use fopen() ? If so, you are erroneously mixing MBCS and Unicode.
char szFile[MAX_PATH];
fopen(szFile, "r");
wchar_t szFile[MAX_PATH];
_wfopen(szFile, "r");
TCHAR szFile[MAX_PATH];
_tfopen(szFile, "r");
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
houari_id wrote: file = fopen(__filepath, "rb");
What is the value of __filepath at this point? When fopen() fails, what is the value of errno ?
houari_id wrote: file = fopen(__filepath, "rb"); .
If you are using Unicode, use _wfopen() instead.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
This error occurs during the compiling the code:
<br />
error C2664: 'fopen' : cannot convert parameter 1 from 'class CString' to 'const char *'<br />
Actually, it is fine in VC++ isn't it? In MFC, I just put file = fopen (dlg.GetPathName(), "rb"); and it's work fine. But in eVC++, this seems not OK.
Houari
|
|
|
|
|
try,
file = fopen ((TCHAR*)dlg.GetPathName().GetBuffer(), "rb");
cheers.. mIlton KB
|
|
|
|
|
Actually in order to work in both cases, you should use _tfopen instead of fopen and _wfopen :
file = _tfopen(dlg.GetPathName(), _T("rb"));
|
|
|
|
|
Waaa!! It works!!
Thank you very much Viorel... and the others too... thank you...
Houari
|
|
|
|
|
Milton KB wrote: file = fopen ((TCHAR*)dlg.GetPathName().GetBuffer(), "rb");
There is no need to call GetBuffer() as the object is not being modified.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
|
I want to use COM components in my application.
When to use
#import
and when to use CoInitialize, CoCreateInstance(..)
Are both reaching to same destination?
Or #import has to be used with ATL executable
and CoInitialize, CoCreateInstance has to be used with InProcess Dlls
Please confirm?
Row
|
|
|
|
|
Any thread that uses COM will have to call CoInitialize or CoInitializeEx to initialize COM on that thread and tell the COM runtime which apartment the thread belongs to. CoCreateInstance is the most common API for object creation. #import is used to get the compiler to generate C++ wrapper classes for COM interfaces from type libraries.
Steve
|
|
|
|
|
CoInitialize() Initializes the COM library on the current thread and identifies the concurrency model as single-thread apartment (STA). Applications must initialize the COM library before they can call COM library functions other than CoGetMalloc and memory allocation functions. (This is from the docs)
Now you can instantiate your component using CoCreateInstance()
You can also invoke the methods of the Component using LoadLibrary() etc
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
-- modified at 8:33 Tuesday 20th June, 2006
|
|
|
|
|
_AnShUmAn_ wrote: You can also invoke the methods of the Component using LoadLibrary() etc
This is not the case.
Steve
|
|
|
|
|
As everybody mentioned you have to call CoInitialize to load/map the COM subsystem into your process memory. This is vital.
Then to use/invoke calls on the Component classes:
Either you can use #import approach or the CoCreateInstance approach.
As a beginner I would recommend you to go for #import as this is comparatively easy. It wraps most of the COM complexities under Smart pointers.
Also this is not the place for posting COM related questions. Going forward please do it in the COM section
cheers...milton Kb
|
|
|
|
|
Hi Milton
Glad to meet u in CP
Where u know?
I am Anilkumar , Ex MOPL
|
|
|
|
|
Hey glad 2 hear from u. I was in seattle,WA. Juz back at Blr last friday. Come 2 milton.kbaby@cognizant.com / miltonkb@msn.com
rgds...milton kb.
|
|
|
|
|
|
|
|
|
I said whats error he said debug error you said what debug error he said got it
whitesky
|
|
|
|
|
If you see a system dialog box with Retry or Break button, then click on that button, and then go to Call Stack panel (from menu: Debug --> Windows --> Call Stack) and see the history of last functions that were called before the error. This information can be useful.
|
|
|
|