Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » unsigned short *' -> unsigned short konvertieren?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
06.09.2003, 11:33 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Probier mal

C++:
LPWSTR temp;
LPCSTR szText;
char* p = "BlaBla";
szText = (LPCSTR)p;

int nLen = strlen(szText) + 1;
temp = new WCHAR [nLen];
mbstowcs(temp, szText, nLen);


Nun sollte der String in temp sein.

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
06.09.2003, 11:36 Uhr
mike
Pinguinhüpfer
(Operator)


Achja
Wenn du den String nicht mehr baruchst

C++:
delete [] temp;




--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
06.09.2003, 12:21 Uhr
Pablo
Supertux
(Operator)


Also, das weiß ich nicht, wozu die MFC diese komische Definitionen macht, wenn man strcpy von Anfang an benutzen kann und in eine Zeile erledigt wäre.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 06.09.2003 um 12:22 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
06.09.2003, 13:11 Uhr
~VooDoo
Gast


Hallo,

danke erstmal für die Antworten, also ich habs jetzt erstmal so versucht:


C++:
long __stdcall BFEncrypt(char* Key, long lLaengeTmp, char* Tmp, LPWSTR Destination)
{
    LPCSTR szText;
    
    char* p = encrypt_string(Key,Tmp);

    szText = (LPCSTR)p;
    int nLen = strlen(szText) + 1;
    Destination = new WCHAR [nLen];
    mbstowcs(Destination, szText, nLen);

    return 15;

    //delete p;

}



naja, da meint VC++:
blowfish.obj : error LNK2001: Nichtaufgeloestes externes Symbol _mbstowcs
blowfish.obj : error LNK2001: Nichtaufgeloestes externes Symbol _strlen
Release/blowfish.dll : fatal error LNK1120: 2 unaufgeloeste externe Verweise

Hm - was fängt man jetzt damit an? *g* (Sorry für die Newbe-Fragen)


@Pablo: Keine Ahnung warum ich kein char * nehme - in irgend einem Beispiel wurde das mit LPWSTR's gemacht *g*

Ich stell mir das so vor:

in VB deklarier ich meine DLL:

Visual Basic:
Private Declare Function BFEncrypt Lib "blowfish.dll" _
     (ByVal Tmp As String, _
      ByVal Key As String, ByRef Destination As Long) As Long



und ruf die dann irgendwo auf:


Visual Basic:
Result = BFEncrypt(Tmp, sKey, 0)

Ergebnis = String$(Result, 0)
BFEncrypt Tmp, sKey, StrPtr(Ergebnis)



Also wird als erstes von der DLL die Länge des neuen Strings zurückgegeben und dann ein neuer String mit dieser Länge angelegt. Dann wird die Funktion nochmal aufgerufen und Destination wird ein Pointer zu diesem String übergeben.

nun C++ macht dann die normale Routine zur berechnung des neuen Strings:


C++:
long __stdcall BFEncrypt(char* Tmp, char* Tmp, char* Destination)
{
    char* p = encrypt_string(Key,Tmp);
    if(Destination) {
        // hier irgendwie p in Destination kopieren - also die Variable im Speicher auf die dann VB zugreift
        }
    int Laenge = strlen(p);
    return Laenge;

    delete p;

}



Aber irgendwie peil ich das nich...

Danke für euer bemühen.

VooDoo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
06.09.2003, 13:22 Uhr
Pablo
Supertux
(Operator)



Zitat:

blowfish.obj : error LNK2001: Nichtaufgeloestes externes Symbol _mbstowcs
blowfish.obj : error LNK2001: Nichtaufgeloestes externes Symbol _strlen
Release/blowfish.dll : fatal error LNK1120: 2 unaufgeloeste externe Verweise



Der Linker findet die Funktion strlen nicht. (MFC!)
Hast du stdio.h includiert? In der Datei, wo man strlen braucht:


C++:
#include <stdio.h>
// eventuell auch #include <string.h>



Ich würde an deiner Stelle char* statt LPWSTR benutzen. Aber ich weiß nicht, was dein Beispiel damit will und warum VC++ die hat.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
06.09.2003, 14:50 Uhr
~VooDoo
Gast


bei dem Beispiel ging es nur darum wie man ein String aus ner C++ DLL an VB übermittelt - aber es führen ja viele Wege nach Rom. Jedenfalls ist der Dateityp egal - für meine Funktion brauch ich den nicht...*g*

Will ja nur dass ich dann in VB auf p zugreifen kann - bzw. den Inhalt

Danke

c ya
VooDoo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
06.09.2003, 14:59 Uhr
Pablo
Supertux
(Operator)


Dann würde ich BFEncrypt nicht als long sondern als char* deklarieren.

return p;
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
06.09.2003, 15:25 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Hier ein gutes HowTo, welches gleich mehere Wege zeigt
www.microsoft.com/msj/0498/visualprog0498.aspx

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
06.09.2003, 21:09 Uhr
Pablo
Supertux
(Operator)


ich hab mir schon gedacht, dass das nur mit char* geht, weil VB nur String kennt. Jetzt bin ich nicht sicher, aber ich glaube VB kennt auch char nicht. Ich verstehe immer noch nicht, wozu MFC dies mit dem LPWSTR definiert. Das finde ich viel zu verwirrend und gar nicht portabel. Siehst du wie viele Probleme das bereitet? Deshalb ist es einfach mit char* oder string zu arbeiten.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
06.09.2003, 22:12 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Pablo,
was hast Du denn nur immer mit den MFC?
LPWSTR ist ein Datentyp des Windows-API
"Pointer to a null-terminated string of 16-bit Unicode characters"! Der macht eigentlich keine Probleme...
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 07.09.2003 um 08:12 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: