GetPrivateProfileString nur erster Buchstabe
-
#include "stdafx.h" #include "iostream" #include "conio.h" #include "windows.h" int main() { char Pfad[100]; char Version[100]; DWORD destSize; WritePrivateProfileString(TEXT("files"),TEXT("Pfad"),TEXT("C:\\Files.ini"),TEXT("C:\\Files.ini")); WritePrivateProfileString(TEXT("files"),TEXT("Version"),TEXT("1.00"),TEXT("C:\\Files.ini")); destSize=500; GetPrivateProfileString(TEXT("files"),TEXT("Pfad"),TEXT("C:\\KeineAhnung"),LPWSTR(Pfad),destSize,TEXT("C:\\Files.ini")); GetPrivateProfileString(TEXT("files"),TEXT("Version"),TEXT("NULL"),LPWSTR(Version),destSize,TEXT("C:\\Files.ini")); std::cout << Version << "\n"; std::cout << Pfad << "\n"; _getch(); }
Wenn ich meinen Code ausführe wird in der Konsole immer nur die ersten Buchstaben angezeigt also so:
1 C
Was habe ich falsch gemacht?!
-
Verwende bitte überall TCHAR und konsorten, dann hast Du nie Probleme!
Also ersetze "char" durch "TCHAR"!
Und lass bitte unnötige casts weg; das deutet immer auf Fehler im Code hin!
(Dein "LPWSTR"!)
-
Wow das ging ja flott
der Compiler spuckt aber jetztprogramm.cpp(17) : error C2664: 'GetPrivateProfileStringW': Konvertierung des Parameters 4 von 'TCHAR' in 'LPWSTR' nicht möglich Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat programm.cpp(18) : error C2664: 'GetPrivateProfileStringW': Konvertierung des Parameters 4 von 'TCHAR' in 'LPWSTR' nicht möglich Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
aus. Hier mein neuer Code
TCHAR Pfad; TCHAR Version; DWORD destSize; WritePrivateProfileString(TEXT("files"),TEXT("Pfad"),TEXT("C:\\Files.ini"),TEXT("C:\\Files.ini")); WritePrivateProfileString(TEXT("files"),TEXT("Version"),TEXT("1.00"),TEXT("C:\\Files.ini")); destSize=500; GetPrivateProfileString(TEXT("files"),TEXT("Pfad"),TEXT("C:\\KeineAhnung"),Pfad,destSize,TEXT("C:\\Files.ini")); GetPrivateProfileString(TEXT("files"),TEXT("Version"),TEXT("NULL"),Version,destSize,TEXT("C:\\Files.ini")); std::cout << Version << "\n"; std::cout << Pfad << "\n"; _getch();
-
Kannst Du eigentlich lesen?
Ich schrieb "ersetze char durch TCHAR"! Was hast Du gemacht?
char Pfad[100];
=>
TCHAR Pfad[100];
Und das mit dem "destSize" lernen wir auch nochmals, bzw. lesen die Doku zu GetPrivateProfileString...
-
das destSize stand in der F.A.Q trotzdem Danke
-
Ja, natürlich war es so in der FAQ... aber Du hast Deinen Code geändert und dann sollte man halt schon wissen was man macht!
-
ist es normal das "0012FDC8" als Ausgabe erscheint?
-
Ja, da Du die DTL verwendest und dort wird der Zeiger auf den TCHAR ausgegeben...
Das liegt daran, das die STL von TCHAR keine Ahnung hat... und Du C und C++ vermischt...Der einfachheit halber verwende:
_tprintf
oder
#ifdef _UNICODE #define tcout std::wcout #else #define tcout std::cout #endif
und dann
tcout << Pfad;
-
Danke jetzt funktionierts!
-
ich weiß nicht ob das hier rein gehört aber weil der thread schon existiert stelle ich mal meine frage: wie mache ich if abfragen mit tchar, und wie konvertiere ich tchar in string?
-
#SuperSonic# schrieb:
ich weiß nicht ob das hier rein gehört aber weil der thread schon existiert stelle ich mal meine frage: wie mache ich if abfragen mit tchar, und wie konvertiere ich tchar in string?
-
Je nach _UNICODE-Define entweder _gar keine Konvertierung_ oder mittels WideCharToMultiByte.
-
und was ist mit if abfrage bei tchar?
if (antwort = "so und so")
klappt net
-
Das klappt unabhängig von TCHAR auch nicht mit char....
Du meinst wohl "_tcscmp"...
-
storage.h:
typedef char TCHAR
Ok, ein Newbie, aber gleich so einen Kram erzählen, ich weiß nicht ...