[gelöst]Unicode in Strings

Anfängerfragen zum Programmieren mit PureBasic.
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

[gelöst]Unicode in Strings

Beitrag von Toshy »

Guten Morgen.

Bei Peeks und pokes wird wohl automatisch im Unicodemodus das richtige Format verwendet, aber man kann bei PeekS auch die länge der zu lesenden Daten angeben. Hier steht aber, das dies in "Bytes" angegeben wird, heißt das, das ich im Unicodemodus die Länge der gewünschten Zeichen "mal zwei" nehmen muß oder ist nur die Beschreibung nicht ganz korrekt?
Was würde passieren, wenn ich im Unicodemodus eine Länge von 5 Bytes angeben würde. Geht ja eigendlich nicht.

Und was mich noch mehr interessiert ist wie es mit der "normalen Stringverarbeitung" aussieht. Läuft dort auch alles automatisch im Unicodemodus? Ich vermute ja. Ich frage vor allem, weil ich gerade mit Apis teste und ich im Unicodemodus falsche Ergebnisse erhalte. Wahrscheinlich ist mein Code noch nicht ganz korrekt, wollte aber hier mal sicher gehn.

Bei einer Funktion steht zum Beispiel auf MSDN folgendes:
Null-terminated Unicode string that specifies the name of the manufacturer of the battery.
Bedeutet dies, daß ich IMMER so einen String nutzen muß, also auch, wenn mein Programm im ASCII-Modus läuft?

Gruß Toshy
Zuletzt geändert von Toshy am 10.02.2007 16:11, insgesamt 1-mal geändert.
1. Win10
PB6.1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Byte angaben für Strings immer * SizeOf(Character)
Im Speicher umgewandelte Strings sind nur sinnvoll, wenn man diese danach
direkt einer Funktion übergibts, die den String in diesem Format benötigt.
Stringfunktionen hierauf sind nicht möglich! Stringfunktionen funktionieren
nur im Modus des Programms!

Strings in PB sind immer Nullterminiert, egal ob Ascii oder Unicode. Bei
Unicode ist jedoch zu bedenken, das es 2 nullen sind :wink:
* SizeOf(Character) eben
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

oh, das war mir nicht bewußt, das bei Unicode 2 Nullen drann stehen. Ist gut das zu wissen. Dann schaue ichi mir meine Code mal an und suche da mal weiter nach meinem Unicodefehler.
Danke
1. Win10
PB6.1
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Die Hilfe ist falsch, es werden nicht Bytes, sondern Zeichen verlangt:

Code: Alles auswählen

s.s = "hallo"
Debug PeekS(@s, 2)
schon im Sommer gemeldet, aber keine Reaktion wie's scheint..
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Len gibt auch die Zeichen zurück, nicht Bytes. Muß man also immer ein bissel
Aufpassen, was wo kommt oder erwartet wird :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

Tja, sowas hatte ich schon "befürchtet". Gt das dies nun geklärt ist. Danke.
1. Win10
PB6.1
Antworten