Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: [C] TCHAR und Unicode

  Alt 27. Sep 2006, 10:36
Zitat von Luckie:
Mache ich denn das so richtig? Funktionieren tut es, aber das muss noch lange nichts heißen.
Das funktioniert so nur, wenn du das Symbol UNICODE definierst.

In der Datei <tchar.h> wird TCHAR eben als "char" oder als "wchar_t" definiert, je nachdem ob UNICODE definiert ist oder nicht. Dort gibt es auch eine ganze Menge von Definitionen, die mit "_t" beginnen (so wird z.B. _tcscpy zu strcpy oder wcscpy).

Auch in <windows.h> wird nach UNICODE unterschieden. Somit ist "FindFirstFile" einfach definiert als entweder "FindFirstFileA" oder "FindFirstFileW".

Fazit:

Wenn du <tchar.h> benutzt, dann benutze den Typen TCHAR und nicht explizit die Widechar-Funktionen des API. Außerdem solltest du alle Character- und String-Konstanten in _T() einschließen. Dann kannst du nämlich mit "-DUNICODE" eine Unicode-Anwendung compilieren und ohne diesen Schalter eben eine Ansi-Anwendung. Dort wo's nicht anders geht (z.B. ist "%s" in allen printf-Varianten immer ein Ansi-String und "%S" ein Unicode-String) musst du dann ggf.mit "#ifdef UNICODE ... #else ... #endif" den Code so oder so schreiben.

ODER

Wenn du immer die Unicode-Varianten nehmen willst, dann benutze auch direkt "wchar_t" als Typ, schreibe direkt L vor jede Character- und String-Konstante und benutze direkt die Widechar-Varianten der API-Funktionen.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat