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 ]
000
03.09.2003, 21:44 Uhr
~VooDoo
Gast


Hallo,

die obrige Fehlermeldung bekomm ich beim kompilieren ('unsigned short *' kann nicht in 'unsigned short' konvertiert werden).

Da ich relativ neu bein in Sachen C++ hab ich keine Ahnung wie ich damit umgehen soll - hab auch beim googlen nicht wirklich was gefunden...leider.

Der Fehler kommt bei folgendem Code:

char* p = encrypt_string(Key,Tmp);
LPWSTR temp = (LPWSTR)p;
*Destination = temp;

Destination ist so definiert:
LPWSTR Destination

Der Fehler kommt bei *Destination = temp;

Mir geht es im Prinzip darum die Variable p (welche char* sein muss - was auch immer das ist) in Destination zu kopieren (die Größe wurde vorher berechnet und Destination drauf angepasst (in VB - da ich eine DLL schreiben muss die an VB einen String zurückgibt)...

Kann mir einer helfen?

Dankeschön
VooDoo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.09.2003, 22:31 Uhr
0xdeadbeef
Gott
(Operator)


-->
(Microsoft-spezifisch)
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.09.2003, 01:19 Uhr
Pablo
Supertux
(Operator)


Wie ist Destination deklariert?

C++:
char** Destination;



Ich versteh nicht ganz, wozu *Destination = temp;

Die Definition von LPWSTR ist

C++:
#ifdef _UNICODE
    typedef const short int * LPCTSTR;
#else
    typedef const char * LPCTSTR;
#endif



Das heißt, dass temp auch ein Pointer ist.
Wenn Destination eineinfacher Pointer über char ist (char* Destination;), dann würde ich nicht so zuweisen, sondern


C++:
Destination = temp;


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 04.09.2003 um 01:19 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.09.2003, 07:52 Uhr
~VooDoo
Gast


Hi,

erstmal Danke für die Antwort, also die ganze Funktion sieht so aus:


C++:
long BFEncrypt(char* Tmp, char* Key, LPWSTR Destination)
{
    
    if (*Key == NULL) { return 0; }
    if (Tmp == NULL || *Tmp == NULL) { return 1; }
    
    char* p = encrypt_string(Key,Tmp);

    long Laenge = lstrlen(p); //benötigte Länge berechnen
    
    if(Destination)
      {  
        //unsigned short temp = (unsigned short)p;
        LPWSTR temp = (LPWSTR)p;
        *Destination = temp;
      }
    return(Laenge);
}




Destination ist also im Funktionskopf (wenn das so hießt *g*) definiert - wie gesagt bin relativ neu in C++ - ich will jedenfalls den Inhalt von char* p in Destination bekommen, hab aber keine Ahnung wie *g

Danke
VooDoo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.09.2003, 08:23 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
long BFEncrypt(char* Tmp, char* Key, LPWSTR* Destination)
{
...
}


(Beachte das zusätzliche *) vor "Destination", ich glaube, das ahst Du vergessen. Denn erst dann macht es sinn.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.09.2003, 20:38 Uhr
~VooDoo
Gast


Hallo nochmal,

also danke für die Antwort - aber damit gehts auch nicht...wenn ich dann in VB darauf zugreife kommt immer "Falsche Aufrufkonventionen"....hm
Noch anderere Ideen?

Danke

c ya
VooDoo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.09.2003, 20:56 Uhr
Pablo
Supertux
(Operator)



Zitat:
virtual postete

C++:
long BFEncrypt(char* Tmp, char* Key, LPWSTR* Destination)
{
...
}


(Beachte das zusätzliche *) vor "Destination", ich glaube, das ahst Du vergessen. Denn erst dann macht es sinn.



Nach Definition ist LPWSTR schon ein Pointer, also braucht man LPWSTR* nicht, oder? Vielleicht mit LPWSTR &Destination, damit Destination von der Funktion geändert werden kann.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 05.09.2003 um 20:59 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.09.2003, 20:59 Uhr
Pablo
Supertux
(Operator)


Geht nicht strcpy mit LPWSTR?


C++:
strcpy(Destination, temp);
// oder vielleicht
strcpy((char*) Destination, temp);



@VooDoo: Was funktioniert nicht? Kannst du nicht kompilieren, oder kriegst du einen Fehler?

ich würde so machen:

C++:
long BFEncrypt(char* Tmp, char* Key, LPWSTR &Destination)
{
    
    if (*Key == NULL) { return 0; } // ist das sinnvoll?
    if (Tmp == NULL || *Tmp == NULL) { return 1; }

    long Laenge = lstrlen(p); //benötigte Länge berechnen
    
    if(Destination)
      {  
        //unsigned short temp = (unsigned short)p;
        LPWSTR temp = (LPWSTR)p;
        Destination = temp;
      }
    return strlen(p);
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 05.09.2003 um 21:03 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.09.2003, 23:27 Uhr
~VooDoo
Gast


Hi,

danke für die Antwort.
Also wenn ich es nach deinem Beispiel mache, also so:


C++:
long BFEncrypt(char* Tmp, char* Key, LPWSTR &Destination)
{

if (*Key == NULL) { return 0; } // ist das sinnvoll?
if (Tmp == NULL || *Tmp == NULL) { return 1; }
    
    char* p = encrypt_string(Key,Tmp);

long Laenge = lstrlen(p); //benötigte Länge berechnen

if(Destination)
{
//unsigned short temp = (unsigned short)p;
LPWSTR temp = (LPWSTR)p;
    Destination = temp;
}
return strlen(p);
}



dann kommen folgende Fehler:
error C2018: Zeichen '0xa0' unbekannt

und dieser Fehler kommt 58 mal...

nunja mit den Strcpy-Funktionen kann VC++ auch nix anfangen, da da das kommt:
error C2664: 'strcpy' : Konvertierung des Parameters 2 von 'unsigned short *' in 'const char *' nicht moeglich

kommt bei folgendem code:

C++:
long BFEncrypt(char* Tmp, char* Key, LPWSTR Destination)
{
    
    if (*Key == NULL) { return 0; }
    if (Tmp == NULL || *Tmp == NULL) { return 1; }
    
    char* p = encrypt_string(Key,Tmp);

    long Laenge = lstrlen(p); //benötigte Länge berechnen
    
    if(Destination)
      {  
       // memcpy(Destination, p, BufSiz);
        
        LPWSTR temp = (LPWSTR)p;

        strcpy((char*) Destination, temp);
      }
    return(Laenge);
}




Ich weiß echt nicht mehr weiter :/ - ich will doch nur nen String in VB haben *g*

Danke
VooDoo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
06.09.2003, 01:05 Uhr
Pablo
Supertux
(Operator)


Wieso nimmt du den Datentyp LPWSTR und nicht char*?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 06.09.2003 um 01:05 Uhr von Pablo Yanez Trujillo 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: