Publié : lun. 08/juin/2009 11:01
Ca va te sembler con, mais je pense que tu peux te passer de tout ce foutoir de conversion unicode vers ansi. PB peut utiliser nativement l'unicode!
Forums PureBasic - Français
http://forums.purebasic.com/french/
Code : Tout sélectionner
Prototype.l CeFindFirstFile(lpFileName.p-unicode, lpFindFileData.CE_FIND_DATA)
If OpenLibrary(0, "rapi.dll")
CeFindFirstFile.handle= GetFunction(0, "CeFindFirstFile")
CeFindFirstFile(filereps, finddata)
EndIf
Code : Tout sélectionner
;#####################################
; Auteur ferblantier forum english
;#####################################
Structure PtrString
StructureUnion
*StrPtr.b
String.s
EndStructureUnion
EndStructure
Procedure.l AmendString(*str.b)
Define.PtrString Result
Result\StrPtr = *str
strlen = Len(Result\String)
For i=0 To strlen/2-1
temp = PeekB(Result\StrPtr + i)
PokeB(Result\StrPtr + i, PeekB(Result\StrPtr + strlen - 1 - i))
PokeB(Result\StrPtr + strlen - 1 - i, temp)
Next
ProcedureReturn Result\StrPtr
EndProcedure
foo$ = "blah"
Debug foo$
Debug @foo$
Debug AmendString(@foo$)
Debug foo$
Debug @foo$
Code : Tout sélectionner
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=2212&highlight=
; Author: dige
; Date: 06. October 2003
; OS: Windows
; Demo: No
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Note: This code example is now for demonstration only,
; because PB v4 supports Unicode now natively.
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Convert PB strings to Unicode strings...
; Wer für API Aufrufe Unicode Strings benötigt ( zum Bsp. für die NetAPI )
; kann diese mit folgendem Workaraound umwandeln:
; PB-String To Unicode
; by DiGe 09/2003
Procedure StringToUnicode ( pbstrptr.l, ucstrptr.l ) ; ANSI Strings nach Unicode codieren
MultiByteToWideChar_ ( #CP_ACP, 0, pbstrptr, Len(PeekS(pbstrptr)), ucstrptr, Len(PeekS(ucstrptr)) )
PokeL ( ucstrptr + Len(PeekS(pbstrptr))*2, 0 )
EndProcedure
; Anwendungsbeispiel:
UserName.s = "dige"
UserName_uc.s = Space ( 255 )
StringToUnicode ( @UserName, @UserName_uc )
; Wichtig, PureBasic kann Unicode Strings nicht verabeiten, d.h. wenn
; der Unicode-Text in der Variblen uc_txt.s ausgelesen oder weiter ver-
; arbeitet werden soll, kann dies nur mit Peek und Poke über die Adresse
; der Variablen @uc_txt geschehen.
; Denn für die PureBasic String Routinen ist der String auf grund der
; Nullbytes nur 1 Zeichen lang.