Versionen der Apis?
-
Ich dachte Unicode würde garantieren das der Text überall richtig interpretiert wird? Du meinst es steht nicht fest ob der Chinese einen Font installiert hat der deutsche Umlaute darstellen kann?
-
WinApi Neuling schrieb:
3. Wenn ich die Unicode Version nehme, bin ich dann immer auf der sicheren Seite? (Performance ist nicht so wichtig.
Mehr oder weniger schon. Wenn Du dann Zeichen verwendest, die das entsprechende Zielsystem nicht darstellen kann, liegt das nicht mehr an Dir, sondern eben am Zielsystem. Du kannst zur Not eine Information anzeigen, alá: "Falls Sie Darstellungsprobleme mit den Schriften haben, installieren Sie bitte die Schrift XYZ."
-
Es ist eigentlich egal, was Du nimmst!
Das wichtigeste ist nur: Verwende *immer* und konsequent "tchar.h"!!!!
Dann kannst Du immer noch von UNICODE auf ANSI oder zurück wechseln, ohne auch nur eine Zeile Code anzufassen!
-
Aber da brauch er ja nicht unbedingt tchar.h inkludieren. TCHAR ist in den std-Windows-Headern definiert und lstrcpy, lstrlen gibts da auch
.
-
Doch, er muss tchar includieren, sonst geht das alles nicht wenn man die CRT verwendet...
Nur ohne CRT braucht man die tchar.h nicht einzubinden...
-
Jochen Kalmbach schrieb:
Doch, er muss tchar includieren, sonst geht das alles nicht wenn man die CRT verwendet...
Nur ohne CRT braucht man die tchar.h nicht einzubinden...Hm joar stimmt, hab grad mal nachgeguckt, aber ob ich nun lstrlen oder _tcslen (dieser Name ist ja echt so sinnfrei ...
) verwende ist doch egal oder ?
-
Es gibt halt nicht zu allen CRT-Funktionen auch Windows-Pedants...
Auch müsstest Du dann einen eigenen Entry-Point definieren, da Du zumindest für "_tmain" das tchar.h brauchst...
-
Erstmal vielen Dank für die Antworten

Wenn ich variabel sein möchte, müsste ich also die Datentypen und String Operationen aus der tchar.h nehmen.
Die tchar.h gibt es nicht im include Verzeichnis meines SDK oder bei den Dateien vom VS6. Ich finde sie nur im Vezeichnis: C:\Program Files\Microsoft SDK\src\crt
Muß ich das jetzt auch immer mit einbinden?Was hat es mit wmain auf sich? In tchar.h steht:
#define _tmain wmain
Wo ist dieses wmain definiert? Reicht es nicht wenn ich meiner main() Routine einfach einen "wchar *param[]" geben lasse?Der int scheint bei Unicode ein wint_t zun sein. Wenn ich das in der tchar.h auflöse komme ich zu einem unsigned short (also nur 2 Bytes):
http://msdn2.microsoft.com/de-de/library/c426s321(VS.80).aspx
Liegt das daran das Unicode schon soviel Platz wegnimmt und man deshalb das mit dem kürzeren int wieder gut machen wollte? *g*
-
Ich werde durchgehend die Unicode Variante nahmen, weil man in C++ scheinbar nicht so einfach zwischen Unicode und Ansi hin und her schalten kann. CStoll hatte vorgeschlagen selber ne Menge TypeDefs zu machen das ist aber zuviel Aufwand. Ich wüsste auch nicht wozu man eine reine Ascii Variante erstellen sollte.
Hat sich also erledigt. Vielen Dank

-
WinApi Neuling schrieb:
Wenn ich variabel sein möchte, müsste ich also die Datentypen und String Operationen aus der tchar.h nehmen.
Die tchar.h gibt es nicht im include Verzeichnis meines SDK oder bei den Dateien vom VS6. Ich finde sie nur im Vezeichnis: C:\Program Files\Microsoft SDK\src\crt
Muß ich das jetzt auch immer mit einbinden?Eigentlich solltest Du die SDK-Include-Verzeichniss zu den Standard-Include-Verzeichnissen Deines Compilers/IDE hibzufügen.
WinApi Neuling schrieb:
Was hat es mit wmain auf sich? In tchar.h steht:
#define _tmain wmainDas ist eben die UNICODE-Version von main. _tmain ist die Zeichensatz unabhängige Version.
WinApi Neuling schrieb:
Wo ist dieses wmain definiert? Reicht es nicht wenn ich meiner main() Routine einfach einen "wchar *param[]" geben lasse?
Nein, das reicht nicht. main ist die ASCII/ANSI-Variante (char), wmain die UNICODE-Variante (wchar_t).
WinApi Neuling schrieb:
Der int scheint bei Unicode ein wint_t zun sein. Wenn ich das in der tchar.h auflöse komme ich zu einem unsigned short (also nur 2 Bytes):
http://msdn2.microsoft.com/de-de/library/c426s321(VS.80).aspx
Liegt das daran das Unicode schon soviel Platz wegnimmt und man deshalb das mit dem kürzeren int wieder gut machen wollte? *g*lol ?!
... also char ist immer mindestens 1 Byte groß, wchar_t ist mindestens 2 Bytes groß. int hat damit eigentlich gar nix zu tun.