Code : Tout sélectionner
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <Array.au3>
#AutoIt3Wrapper_Run_AU3Check=n
;~ #include "SQLiteExtLoad.au3" ; inlined below
_SQLite_Startup()
If @error Then
_ByeBox("SQLite3.dll est introuvable.")
EndIf
OnAutoItExitRegister("_SQLite_ShutDown")
; load auto-extensions
_SQLite_LoadAutoExtension("unifuzz.dll")
If @error Then
ConsoleWrite("@error = " & @error & ', @extended = ' & @extended & @LF)
_ByeBox("Erreur lors du chargement de l'extension Unifuzz.")
EndIf
; open temporary memory database
Global $hMemDB = _SQLite_Open()
; display versions of the setup
ConsoleWrite(_Sl3Answer($hMemDB, "select 'SQLite3 v' || sqlite_version() || ' - ' || unifuzz();") & @LF)
;~ #######################################################
Local $aStrings = [ _
["FR", "Ton curriculum vitae m'étonne !", "", ""], _
["UK", "Your résumé amazes me!", "", ""], _
["DE", "Dein Lebenslauf überrascht mich!", "", ""], _
["GR", "Το βιογραφικό σας εκπλήσσει!", "", ""], _
["RU", "Ваше резюме удивить меня!", "", ""], _
["LT", "Jūsų CV mane stebina!", "", ""], _
["PT", "Seu currículo me surpreende!", "", ""], _
["IL", "קורות החיים שלך מפתיעים אותי!", "", ""], _
["IS", "Ný óvart mig!", "", ""], _
["VN", "Sơ yếu lý lịch của bạn làm tôi ngạc nhiên!", "", ""], _
["SI", "Vaš življenjepis presenetilo me je!", "", ""], _
["SK", "Váš životopis prekvapí ma!", "", ""], _
["LV", "Jūsu CV mani pārsteidz!", "", ""], _
["FI", "Ansioluettelosi yllätys minulle!", "", ""], _
["IN", "आपका पुनः आरंभ मुझे आश्चर्य!", "", ""], _
["IR", "رزومه کاری خود را به من تعجب!", "", ""], _
["MN", "Таны намтар намайг гайхах!", "", ""], _
["IN", "ਆਪਣੇ ਰੈਜ਼ਿਊਮੇ ਮੈਨੂੰ ਹੈਰਾਨ!", "", ""], _
["SE", "Ditt CV förvånar mig!", "", ""] _
]
For $i = 0 To UBound($aStrings) - 1
$aStrings[$i][2] = _Unaccent($aStrings[$i][1])
$aStrings[$i][3] = _LowerUnaccent($aStrings[$i][1])
Next
_ArrayDisplay($aStrings)
;~ #######################################################
_SQLite_Close($hMemDB)
_SQLite_Shutdown()
Func _ByeBox($msg)
MsgBox(8192 + 16, "erreur fatale", $msg)
Exit
EndFunc ;==>_ByeBox
Func _Sl3Answer($hDB, $sql)
Local $row
Local $rtn = _SQLite_QuerySingleRow($hDB, $sql, $row)
If $rtn = $SQLITE_OK Then
Return ($row[0])
Else
Return (SetError(@error, $rtn, ''))
EndIf
EndFunc ;==>_Sl3Answer
Func _Unaccent($str)
Return (_Sl3Answer($hMemDB, "select unaccent(" & _SQLite_FastEscape($str) & ");"))
EndFunc ;==>_Unaccent
Func _Lower($str)
Return (_Sl3Answer($hMemDB, "select lower(" & _SQLite_FastEscape($str) & ");"))
EndFunc ;==>_Lower
Func _LowerUnaccent($str)
Return (_Sl3Answer($hMemDB, "select lower(unaccent(" & _SQLite_FastEscape($str) & "));"))
EndFunc ;==>_LowerUnaccent
Func _Upper($str)
Return (_Sl3Answer($hMemDB, "select upper(" & _SQLite_FastEscape($str) & ");"))
EndFunc ;==>_Upper
Func _UpperUnaccent($str)
Return (_Sl3Answer($hMemDB, "select upper(unaccent(" & _SQLite_FastEscape($str) & "));"))
EndFunc ;==>_UpperUnaccent
;; SQLiteExtLoad.au3
#include-once
; #FUNCTION# ====================================================================================================================
; Name...........: _SQLite_EnableExtensions
; Description ...: Enables or disables loading of SQLite extensions
; Syntax.........: _SQLite_EnableExtensions($hConn, $Enable = 1)
; Parameters ....: $hConn handle of connection
; $Enable 1 to enable (default) or 0 to disable
; Return values .: none
; @error Value(s): -1 - SQLite Reported an Error (Check @extended Value)
; 1 - Call prevented by safe mode (invalid handle)
; 2 - Error calling SQLite API 'sqlite3_enable_load_extension'
; @extended Value(s): Can be compared against $SQLITE_* Constants
; Author ........: jchd
; ===============================================================================================================================
Func _SQLite_EnableExtensions($hConn, $Enable = 1)
If __SQLite_hChk($hConn, 1) Then Return SetError(@error, 0, $SQLITE_MISUSE)
Local $RetVal = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_enable_load_extension", "ptr", $hConn, "int", $Enable)
If @error Then
Return(SetError(2, 0, 0))
Else
If $RetVal[0] <> $SQLITE_OK Then Return(SetError(-1, $RetVal[0], 0))
EndIf
EndFunc ;==>__SQLite_EnableExtensions
; #FUNCTION# ====================================================================================================================
; Name...........: _SQLite_LoadExtension
; Description ...: Loads an SQLite extension for current connection
; Syntax.........: _SQLite_LoadExtension($hConn, $sFullPath [, $sEntry = ''])
; Parameters ....: $hConn handle of the connection for which the extension will be loaded
; $sFullPath path and name of the extension DLL
; $sEntry name of entry point, defaults to 'sqlite3_extension_init'
; Return values .: none
; @error Value(s): -1 - SQLite Reported an Error (Check @extended Value)
; 1 - Call prevented by safe mode (invalid handle)
; 2 - Error while converting path to UTF-8
; 3 - Error calling SQLite API 'sqlite3_load_extension'
; @extended Value(s): Can be compared against $SQLITE_* Constants
; Author ........: jchd
; ===============================================================================================================================
Func _SQLite_LoadExtension($hConn, $sFullPath, $sEntry = 'sqlite3_extension_init')
If __SQLite_hChk($hConn, 1) Then Return SetError(@error, 0, $SQLITE_MISUSE)
Local $tDllPath = __SQLite_StringToUtf8Struct($sFullPath)
If @error Then Return(SetError(2, @extended, 0))
Local $RetVal = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_load_extension", _
"ptr", $hConn, _
"ptr", DllStructGetPtr($tDllPath), _
"str", $sEntry, _
"ptr", 0)
If @error Then
Return(SetError(3, 0, 0))
Else
If $RetVal[0] <> $SQLITE_OK Then Return(SetError(-1, $RetVal[0], 0))
EndIf
EndFunc ;==>_SQLiteLoadExtension
; #FUNCTION# ====================================================================================================================
; Name...........: _SQLite_LoadAutoExtension
; Description ...: Permanently loads an SQLite extension for current session
; Syntax.........: _SQLite_LoadAutoExtension($sFullPath [, $sEntry = ''])
; Parameters ....: $sDllPath path of the extension DLL
; $sEntry optional name of entry point, defaults to 'sqlite3_extension_init'
; Return values .: none
; @error Value(s): -1 - SQLite Reported an Error (Check @extended Value)
; 1 - Error while loading extension DLL
; 2 - Error obtaining address of named entry point
; 3 - Error calling SQLite API 'sqlite3_auto_extension'
; @extended Value(s): Can be compared against $SQLITE_* Constants
; Author ........: jchd
; ===============================================================================================================================
Func _SQLite_LoadAutoExtension($sFullPath, $sEntry = 'sqlite3_extension_init')
Local $RetVal = DllCall("kernel32.dll", "ptr", "LoadLibraryW", "wstr", $sFullPath)
If (@error Or $RetVal[0] = 0) Then Return(SetError(1, 0, 0))
$RetVal = DllCall('kernel32.dll', 'ptr', 'GetProcAddress', 'ptr', $RetVal[0], 'str', $sEntry)
If (@error Or $RetVal[0] = 0) Then Return(SetError(2, 0, 0))
$RetVal = DllCall($__g_hDll_SQLite, "none:cdecl", "sqlite3_auto_extension", "ptr", $RetVal[0])
If @error Then
Return(SetError(3, 0, 0))
Else
If $RetVal[0] <> $SQLITE_OK Then Return(SetError(-1, $RetVal[0], 0))
EndIf
EndFunc ;==>_SQLite_LoadAutoExtension