| |
|
|
|
Beschreibung:
WideCharToMultiByte wandelt einen Unicode String in einen Multi- oder Singlebyte String um.
Deklaration:
DEF @WideCharToMultiByte(8) !kernel32,WideCharToMultiByte
Parameter:
1.Parameter: Codepage Nummer als Integer. => -0 = ANSI Codepage -1= OEM Codepage -2 = Macintosh Codepage 2.Parameter: Performance- und Umwandlungsflags als LongInt (kann 0 sein). 3.Parameter: Bereich mt oder Adresse eines Strings im Unicode Format, der konvertiert werden soll. 4.Parameter: Anzahl der Buchstaben im String aus Parameter 3. Wird hier –1 angegeben, wird angenommen, dass der String mit einem Nullbyte endet und die Dimensione automatisch berechnet. 5.Parameter: Ausreichend dimensionierte Bereichsvariable, die den konvertierten String aufnimmt. 6.Parameter: Dimensione des Bereichs von Parameter 5 als Integer. Wenn dieser Parameter 0 ist, gibt die Funktion die benötigte Anzahl an Bytes per Parameter 5 zurück. 7.Parameter: Adresse eines Strings oder Bereichsvariable mit einem String, der einen Buchstaben enthält, der eingesetzt wird, wenn ein Unicode Buchstabe nicht übersetzt werden kann. Dieser Parameter kann 0 sein – es wird dann ein Systemstandard verwendet. 8.Parameter: Bereichsvariable, die die Adresse eines Flags empfängt, der anzeigt ob ein Buchstabe durch ein ‚Default’ (Parameter 7) ersetzt wurde (kann 0 sein). => -1 = Ja -0 = Nein
Rückgabewert:
Wenn Parameter 6 auf 0 gesetzt wird und die Aktion gelingt, liefert die API als Rückgabe die erforderliche Dimensione des Bereiches in Parameter 5. Wenn Parameter 6 ungleich 0 ist und die Funktion erfolgreich abgeschlossen wurde, ist die Rückgabe die Anzahl der kopierten Zeichen (+abschließendes Nullbyte). Bei Rückgabe 0 ist ein Fehler aufgetreten.
Beispiele:
KompilierenMarkierenSeparierenDEF @WideCharToMultiByte(8) !"kernel32","WideCharToMultiByte"
DEF @MultiByteToWideChar(6) !"kernel32","MultiByteToWideChar"
DEF @GetACP(0) !"kernel32","GetACP"
Windowstyle 31
Windowtitle "Stringumwandlung ins Unicode Format"
Window 0,0-640,440
Declare Unicode#,SingleByte#,SingleByte$,Fehler&
DIM Unicode#,256*2
DIM SingleByte#,256
Clear Unicode#
LET SingleByte$=@input$("Bitte Wort eingeben","Stringumwandlung","Hallo")
LET Fehler&=@MultiByteToWideChar(@GetACP(),0,@ADDR(SingleByte$),-1,Unicode#,256*2)
Print "Rückmeldung von MultiByteToWideChar="+@STR$(Fehler&)
Print "Singlebyte="+SingleByte$
PRINT "Unicode="+@CHAR$(Unicode#,0,@LEN(SINGLEBYTE$)*2)
Let Fehler&=@WideCharToMultiByte(@GetACP(),0,Unicode#,-1,SingleByte#,256,0,0)
Print "Rückmeldung von WideCharToMultiByte="+@STR$(Fehler&)
Print "Zurück in Singlebyte="+@STRING$(Singlebyte#,0)
Dispose Unicode#
Dispose SingleByte#
While 0=0
Waitinput
Wend
|
|
|
| |
|
|