# char[5] -> LPTSTR



## chevyvan2000 (12. Juli 2006)

Hallo,

bin noch Anfänger in sachen c/c++ hab bisher nur Pascal programmiert...
Bin an einer Win CE Anwendung mit embedded Visual C++ zugange.

Mein Problem ist ich möchte einen String (char array) in einen LPTSTR umwandeln:

char testStr[5]={"test"};
MessageBox(NULL,(LPTSTR)testStr,NULL,MB_OK);

Dann kommt bei der Ausgabe nur Kästchen raus.

MessageBox(NULL,TEXT("test"),NULL,MB_OK);

Funktioniert...


----------



## deepthroat (12. Juli 2006)

Hi.

Nimm einfach den generischen Typ TCHAR:
	
	
	



```
TCHAR testStr[] = TEXT("test");
```
Ein LPTSTR ist nichts anderes als ein "(Long) Pointer to TCHAR String".

Eine andere Möglichkeit wäre in deinem Projekt Unicode und MBCS Unterstützung abzuschalten, dann ist ein TCHAR nichts anderes als ein char und ein LPTSTR ist dann ein "normaler" char-String.

Gruß


----------



## chevyvan2000 (12. Juli 2006)

Danke für die schnelle antwort, das ding ist , das ich die testStr dynamisch aus einer datei füllen möchte und dann anzeigen:

TCHAR testStr[80];
FILE *InputFile;

InputFile=fopen("\\My Documents\\input.txt","r");
fscanf( InputFile, "%s\n", testStr);
fclose(InputFile);

MessageBox(NULL,(LPTSTR)testStr,NULL,MB_OK);
oder
Edit_SetText(GetDlgItem(hDlg,IDC_EDIT_BEZ), (LPTSTR)testStr);

in der textdatei steht z.B.:
Hallo du


es kommen da immer noch diese kästchen raus.
wo genau kann ich denn unicode umstellen?


----------



## deepthroat (12. Juli 2006)

Wo man das umstellen / einstellen kann weiß ich nicht. Irgendwo in den Projekeinstellungen muss es eine Möglichkeit geben.

Es ist allerdings sowieso besser die generischen Funktionen zu verwenden - dann kann das Programm als Unicode/MBCS bzw. ohne Unicode kompiliert werden.

Du mußt dann statt fscanf einfach nur _ftscanf verwenden. Ähnlich gibt es für andere Textfunktionen die standardmäßig mit dem char Datentyp arbeiten Ersatzfunktionen die mit Unicode bzw. mit MBCS Strings arbeiten (_tscanf statt scanf, _tprintf statt printf usw.)
Eine Übersicht gibt's hier: http://msdn.microsoft.com/library/d...ry/en-us/vclib/html/_crt_routine_mappings.asp

Du brauchst testStr auch nicht casten, das sollte nicht notwendig sein.

Gruß


----------



## TwoFaze (12. Juli 2006)

Schau dir in diesem Fall mal die Funktion MultiByteToWideChar an.
Hatte letzte Woche das selbe Problem und bin damit weitergekommen  

Gruß!


----------



## chevyvan2000 (12. Juli 2006)

vielen vielen dank, mit:

_ftscanf ( InputFile, TEXT("%s\n"), testStr);

funktioniert es ;-)
und mit sowas schlägt man sich dann stundenlang rum... ist halt so bei einer neuen syntax...


----------

