J'ai un probleme pour convertir un code que j'avais fait en VB pour l'exporte en PureBasic. Ce code permet de listé les fichiers d'un pocket PC
Code : Tout sélectionner
Public Function RapiListFiles(ByVal strFileReps As String) As Boolean
' DECLARATION DES VARIABLES.
Dim FindData As CE_FIND_DATA
Dim SearchHandle As Long
Dim FindReturn As Long
Dim strResult As String
' ROUTINE DE LISTAGE DU POCKET-PC.
strFileReps = strFileReps & "*"
SearchHandle = CeFindFirstFile(StrPtr(strFileReps), FindData)
If SearchHandle <> INVALID_HANDLE_VALUE Then
Do
strResult = LCase$(UnicodeToAnsi(StrConv(FindData.cFileName, vbFromUnicode)))
Call List_affichage(strResult)
FindData.cFileName = vbNullString
FindReturn = CeFindNextFile(SearchHandle, FindData)
Loop Until FindReturn = 0
End If
End Function
Code : Tout sélectionner
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- DECLARATION DES VARIABLES.
#OPENLIB_0 = 1
#ONE_SECOND = 1000
#TIME_WAIT_READ = 5
#INVALID_HANDLE_VALUE = -1
Structure RAPIINIT
cbSize.l
heRapiInit.l
hrRapiInit.l
EndStructure
Structure CEOSVERSIONINFO
dwOSVersionInfoSize.l
dwMajorVersion.l
dwMinorVersion.l
dwBuildNumber.l
dwPlatformId.l
szCSDVersion.s[128]
EndStructure
Structure CE_FIND_DATA
dwFileAttributes.l
ftCreationTime.FILETIME
ftLastAccessTime.FILETIME
ftLastWriteTime.FILETIME
nFileSizeHigh.l
nFileSizeLow.l
dwOID.l
cFileName.s[256]
EndStructure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.b RapiConnect()
; INITIALISATION DE LA CONNEXION (RAPI.DLL).
If OpenLibrary(#OPENLIB_0, "rapi.dll")
Define Hr.l
Define dwTimeout.l
Define dwWaitRet.l
Protected pRapiInit.RAPIINIT
dwTimeout = #TIME_WAIT_READ * #ONE_SECOND
pRapiInit\cbSize = SizeOf(pRapiInit)
pRapiInit\heRapiInit = 0
pRapiInit\hrRapiInit = 0
Hr = CallFunction(#OPENLIB_0, "CeRapiInitEx", @pRapiInit)
If Hr>-1
dwWaitRet = WaitForSingleObject_(pRapiInit\heRapiInit, dwTimeout)
If dwWaitRet = 0
If pRapiInit\hrRapiInit >= 0
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
Else
ProcedureReturn #False
EndIf
Else
ProcedureReturn #False
EndIf
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.b RapiClose()
; FERMETURE DE LA CONNEXION (RAPI.DLL).
CallFunction(#OPENLIB_0, "CeRapiUninit")
CloseLibrary(#OPENLIB_0)
EndProcedure
Procedure.s RapiGetCEOSVersionString()
; DONNE LA VERSION DU POCKET-PC.
Protected ceosver.CEOSVERSIONINFO
ceosver\dwOSVersionInfoSize = SizeOf(ceosver)
CallFunction(#OPENLIB_0, "CeGetVersionEx", @ceosver)
ProcedureReturn Str(ceosver\dwMajorVersion) + "." + Str(ceosver\dwMinorVersion) + "." + Str(ceosver\dwBuildNumber) + " " + ceosver\szCSDVersion
EndProcedure
Procedure.b RapiIsConnect()
; VERIFICATION DE LA CONNEXION.
If RapiGetCEOSVersionString()<>""
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.b RAPICopyCEFileToPC(CESourceFile.s,PCDestFile.s)
;
EndProcedure
Procedure.b RAPICopyPCFileToCE(PCSourceFile.s, CEDestFile.s)
;
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.s UnicodeToAnsi(chain.s)
;
Define i.l
Define j.l
Define result.s
j = Len(chain)
For i = 1 To j
If Asc(Mid(chain, i, 1)) > 0
result = result + Mid(chain, i, 1)
Else
Goto fin
EndIf
Next
fin:
ProcedureReturn result
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
If RapiConnect() = #True
If RapiIsConnect() = #True
MessageRequester("Connexion au Pocket-PC", "VERSION: " + RapiGetCEOSVersionString(), #PB_MessageRequester_Ok)
RapiClose()
EndIf
EndIf
Cordialement,
GallyHC