LPSTR ausgabe funktioniert beim besten willen nicht
-
Wieso bekomme ich keine ausgabe eines einfachen lpstr hin?
Eigentlich handelt es ich dabei doch auch nur um einen char* oder wie sehe ich das.
Ich habe folgenden code getestet und wenn ich einen breakpoint setze sehe ich auch, dass cTest den gewünschten wert hat:char* cTest; cTest = meinLPSTR; cout << cTest << endl;Wieso geht das nicht?
Es wird immer etwas verwirrendes ausgegeben. Kann es sein, dass es etwas mit den Adressen zu tun hat?Außerdem wenn ich jedoch cout << *meinLPSTR << endl; schreibe kommt der erste buchstabe(was ja auch verständlich ist) nur wie mache ich es, dass alles kommt ohne groß rumzuprobieren.
-
Bitte ganzen Code posten, so kann man nur raten.
-
Hier die funktion über die der wert LPSTR gesetzt wird:
BOOL Drive::GetVolume_Information(VolumeInformation *_volumeInformation){ TCHAR volumeName[MAX_PATH + 1] = { 0 }; TCHAR fileSystemName[MAX_PATH + 1] = { 0 }; DWORD serialNumber = 0; DWORD maxComponentLen = 0; DWORD fileSystemFlags = 0; if (GetVolumeInformation( _T(Drive::cRootPath), volumeName, ARRAYSIZE(volumeName), &serialNumber, &maxComponentLen, &fileSystemFlags, fileSystemName, ARRAYSIZE(fileSystemName))) { *_volumeInformation = VolumeInformation((char*)volumeName, &serialNumber, &maxComponentLen, &fileSystemFlags, (char*)fileSystemName); return TRUE; } return FALSE; }VolumeInformation ist ein sruct. das (char*) hatte ich schon durch LPSTR ersetzt was im prinzip ja nicht viel unterschied macht.
Dann wird die Funktion hier aufgerufen:
Drive::VolumeInformation info; drive.GetVolume_Information(&info);Und dann sollte ausgegeben werden:
cout << "VolumeName: " << info.VolumeNameBuffer << endl;
-
Du solltest dir zuerst die Frage stellen, welche Zeichencodierung du verwenden willst. Willst du, dass dein Programm generisch sein soll (TCHAR) oder legst du dich auf ein bestimmtes Format fest (char oder w_char_t).
Im Moment hast du einen guten (eigentlich schlechten) Mix aus allem und das fliegt dir gerade um die Ohren.
-
Und wie sieht die Klasse VolumeInformation aus? Warum castest du von TCHAR* nach char*?
(Variablennamen mit einem Unterstrich am Anfang sollte man lieber nicht verwenden, auch wenn das mit Kleinbuchstaben wohl noch an der Grenze der reservierten Namen liegt.)
-
das ist keine klasse ist struct wie oben erwähnt
-
charproblem schrieb:
das ist keine klasse ist struct wie oben erwähnt
struct == Klasse mit default public, aber zeig doch einfach mal her. Warum du da castest hast du auch noch nicht beantwortet, das könnte der Fehler sein, aber in jedem Fall machst du so den Sinn von TCHAR kaputt.