wcscpy(unsigned short*,const unsigned short*);
-
Hallo!
beim kompilieren von:
wcscpy(unsigned short*,const unsigned short*);bekomme ich folgende Fehlermeldung:
error C2664: 'wcscpy' : cannot convert parameter 2 from 'class CString' to 'const unsigned short *'
Mein Code dazu sieht folgendermaßen aus:
CString branchPosition; LPWSTR pszBranchPosition; long len = (branchPosition.GetLength() + 1) * 2; pszBranchPosition = (LPWSTR) malloc( len ); wcscpy( pszBranchPosition, branchPosition); //hier ist der FehlerEigentlich sollte es doch so funktionieren?!
Kann mir da jemand helfen?
Vielen Dank!Gruß
Sebastian
-
Servus,
ich habe zwar keinen blassen Schimmer was du machen willst und habe auch im mom keine riesen Lust darüber nazudenken, aber haste mal mit Casten versucht?
z.B.
wcscpy( pszBranchPosition, (const unsigned short*)branchPosition);Obwohl ich nicht glaube das es damit getan ist. Du willst einen CString in einen Char kopieren sehe ich richtig oder?
*winke*
Hellsgore
-
Hallo,
so:
... wcscpy( pszBranchPosition, branchPosition.GetBuffer(0)); ...sollte es gehen
MfG
-
du machst das viel zu umständlich
CString branchPosition;
//CString to WSTR
LPWSTR pszBranchPosition=branchPosition.AllocSysString();
-
1. CString != wchar_t * (short *).
wenn du nen CString (wrapper fuer TCHAR * ) nach wchar_t umwandeln willst, dann hast erst mal nen Grosses Problem. Oder DU benutzt Fertige Makros aus der ATL

TCHAR kann gleich wchar_t sein, wennn _UNICODE gesetzt wurde. dann brauchst ned konvertieren, dann gehts so . Wennn _UNICODE nicht gesetzt, dann ist TCHAR = char und du musst den String expandieren ! MultiByteToWideChar / WideCharToMultiByte sind hier die passenden windows-funktionen.
Also wenn du keine makros benutzt, musst bedingt kompilieren (#ifdef _UNICODE) ... etcCString branchPosition; //CString to WSTR LPWSTR pszBranchPosition=branchPosition.AllocSysString();Das ist gefaehrlich !
LPWSTR ist nen wchar_t *.
AllocSysString erzeugt dir nen BSTR !!!
der unterschied:
dein LPWSTR ist nen zeiger auf nen normales array.
der BSTR hat zusaetzlich vorangestellt 2 Bytes fuer die Laengenangabe ! Und der zeiger selber zeigt aber hinter die 2 bytes, auf den beginn des Zeichenarrays. Damit wird er zwar kompatibel zu LPWSTR ABER: er darf nicht mittels den normalen wcs stringfunktionen modifiziert werden, und er darf nicht mit delete geloschtwerden, sondern mit SysFreeString !!!Ciao ...