#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_outfile=csv2gpsexec_mod.exe #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;Format du fichier aprés traitement ;Latitude ,Longitude,,,DISTANCE,UNITé,"TYPERADAR_VITESSE" ;44.812837,-0.555668,,,500,M,"RADAR_FIXE_130" ;44.814602,-0.572405,,,500,M,"RADAR_MOBILE_80" ; Ajout des fichiers nécessaires au fonctionnement du script. #include #include #include #include #include #include #include #include ; cette ligne peut être effacée après avoir vu à quoi ressemblait un tableau. If Not FileExists(@ScriptDir & "\csv2gpsexec.ini") Then IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "with_gui ", "false or true default=false") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "files_in ", "add files.csv , ex:files1.csv,files2.csv,...filesn.csv") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "file_out ", "file_out name") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "concatenation ", "concatenation all files , false or true default=false") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "units ", "unit (MI,FT,YD,KM,M) default is M") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "minhdg ", "Minimun trigger heading at location in degres(default=nothing)") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "maxhdg ", "Minimun trigger heading at location in degres(default=nothing)") EndIf ; Déclaration des variables utilisées pour la suite du script. Dim $aRadars, $Fichier, $Var, $Var2, $Longitude, $Latitude, $Vitesse, $TypeRadar, $Res , $Inp_Distance , $Concatener , $Cb_Unites , $Inp_Minhdg , $Inp_Maxhdg Dim $szDrive, $szDir, $szFName, $szExt _ChoixRadars() ; La fonction attribue automatiquement le nom du fichier et le type de radar. ; On lit le fichier dans un tableau If Not _FileReadToArray($Fichier, $aRadars) Then ; Si problème à la lecture du fichier MsgBox(4096, "Erreur", "Erreur de lecture du fichier ") ; Erreur Exit EndIf ; Décommentez cette ligne pour voir à quoi ressemble le tableau de départ. ;_ArrayDisplay($aRadars, "Tableau des radars") For $i = 1 To $aRadars[0] ; permet de lire le tableau de l'élément 1 au dernier. $Var = StringSplit($aRadars[$i], ",") ; Ceci permet de lire chaque élément du tableau. $Longitude = $Var[1] ; On attribue la valeur de la longitude $Latitude = $Var[2] ; On attribue la valeur de la latitude $Var2 = StringSplit($Var[3], '@"') ; On décompose la chaine restante $Vitesse = $Var2[3] ; On récupère la vitesse ; Attribution à la cellule du tableau de la chaine mise en forme. $aRadars[$i] = $Latitude & ',' & $Longitude & ',' & $Inp_Minhdg & ',' & $Inp_Maxhdg & ',' & $Inp_Distance & ',' & $Cb_Unites & ',"' & $TypeRadar & "_" & $Vitesse & '"' Next ; Décommentez cette ligne pour voir à quoi ressemble le tableau d'arrivée. ;_ArrayDisplay($aRadars, "Tableau des radars") ; Ecriture du fichier de destination : _ArrayDelete($aRadars, 0) ; On supprime le nombre d'élément du tableau $Path = _PathSplit($Fichier, $szDrive, $szDir, $szFName, $szExt) ; On décompose chemin, nom de fichier et extention. $Fichier = $szDrive & $szDir & $szFName & "_New" & $szExt ; on recompose le nom de fichier avec _New en plus du nom. If Not _FileWriteFromArray($Fichier, $aRadars) Then ; Si problème à l'écriture du fichier MsgBox(4096, "Erreur", "Erreur d'écriture du fichier ") ; Erreur Exit EndIf $Res = MsgBox(36, "", "Voulez-vous traiter un autre fichier ? ") If $Res = 6 Then If @Compiled Then ; Si le fichier est compilé ... ShellExecute(@ScriptFullPath) ; alors on le relance puis ... Exit ; on quitte celui-ci Else ShellExecute(@AutoItExe, '"' & @ScriptFullPath & '"') ; Sinon on lance AutoIt.exe avec le script en argument. EndIf EndIf Func _ChoixRadars() #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("CSV Convert", 568, 353, -1, -1) $Annuler = GUICtrlCreateButton("Annuler", 392, 296, 75, 25) $OK = GUICtrlCreateButton("OK", 480, 296, 75, 25) $Group1 = GUICtrlCreateGroup(" Radars ", 8, 15, 297, 305) $Fic_RF = GUICtrlCreateInput("", 16, 63, 250, 21) $Choix_RF = GUICtrlCreateButton("...", 270, 63, 20, 20) $Lb_RF = GUICtrlCreateLabel("Fichier radars fixes :", 16, 39, 194, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Fic_RM = GUICtrlCreateInput("", 16, 119, 250, 21) $Choix_RM = GUICtrlCreateButton("...", 270, 119, 20, 20) $Lb_RM = GUICtrlCreateLabel("Fichier radars mobiles :", 16, 95, 194, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Fic_RFR = GUICtrlCreateInput("", 16, 183, 250, 21) $Choix_RFR = GUICtrlCreateButton("...", 270, 183, 20, 20) $Lb_RFR = GUICtrlCreateLabel("Fichier radars feu rouge :", 16, 159, 194, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Fic_ZD = GUICtrlCreateInput("", 16, 247, 250, 21) $Choix_ZD = GUICtrlCreateButton("...", 270, 247, 20, 20) $Lb_ZD = GUICtrlCreateLabel("Fichier radars zones dangereuse :", 16, 223, 242, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Ckb_Fusion = GUICtrlCreateCheckbox("Concaténer les fichiers", 16, 287, 185, 17) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2 = GUICtrlCreateGroup(" Options ", 312, 15, 241, 169) $Lb_Minhdg = GUICtrlCreateLabel("MINHDG :", 327, 75, 72, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Lb_Maxhdg = GUICtrlCreateLabel("MAXHDG :", 327, 110, 76, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Lb_Distance = GUICtrlCreateLabel("DISTANCE :", 327, 145, 88, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Inp_Minhdg = GUICtrlCreateInput("", 442, 70, 97, 21) $Inp_Maxhdg = GUICtrlCreateInput("", 442, 105, 97, 21) $Inp_Distance = GUICtrlCreateInput("", 442, 140, 97, 21) $Lb_Unites = GUICtrlCreateLabel("UNITES :", 327, 40, 68, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Cb_Unites = GUICtrlCreateCombo("", 442, 35, 97, 25) GUICtrlSetData(-1, "Miles (MI)|Feet (FT)|Yards (YD)|Kilometers (KM)|Meters (M)", "Kilometers (KM)") GUICtrlCreateGroup("", -99, -99, 1, 1) $Menu = GUICtrlCreateMenu("?") $Apropos = GUICtrlCreateMenuItem("A propos", $Menu) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 ; Boucle de message (voir la section création d'une GUI pour comprendre le fonctionnement) $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Annuler ; Si la fenêtre est fermée ou si le bouton annulé est cliqué. Exit Case $Choix_RF ; Si le bouton ... à été cliqué. $Fichier = FileOpenDialog("Choisissez le fichier à modifier", @ScriptDir, "Fichier asc (*.csv)", 1) If $Fichier <> "" Then GUICtrlSetData($Fic_RF, $Fichier) ; Si le nom du fichier n'est pas vide, ; on attribue ca valeur au champ de l'input. Case $Choix_RM ; Si le bouton ... à été cliqué. $Fichier = FileOpenDialog("Choisissez le fichier à modifier", @ScriptDir, "Fichier asc (*.csv)", 1) If $Fichier <> "" Then GUICtrlSetData($Fic_RM, $Fichier) ; Si le nom du fichier n'est pas vide, ; on attribue ca valeur au champ de l'input. Case $Choix_RFR ; Si le bouton ... à été cliqué. $Fichier = FileOpenDialog("Choisissez le fichier à modifier", @ScriptDir, "Fichier asc (*.csv)", 1) If $Fichier <> "" Then GUICtrlSetData($Fic_RFR, $Fichier) ; Si le nom du fichier n'est pas vide, ; on attribue ca valeur au champ de l'input. Case $Choix_ZD ; Si le bouton ... à été cliqué. $Fichier = FileOpenDialog("Choisissez le fichier à modifier", @ScriptDir, "Fichier asc (*.csv)", 1) If $Fichier <> "" Then GUICtrlSetData($Fic_ZD, $Fichier) ; Si le nom du fichier n'est pas vide, ; on attribue ca valeur au champ de l'input. Case $OK ; Si le bouton OK à été cliqué. $Fichier = GUICtrlRead($OK) ; On lit le nom du fichier If FileExists($Fichier) Then ; On vérifie que le fichier existe bel et bien. ; Teste chaque radioBox et valide le choix If _IsChecked($Ckb_Fusion) Then $TypeRadar = "RADAR_FIXE" GUIDelete($Form1) ; Efface la GUI Return ; on sort de la fonction EndIf EndSwitch WEnd EndFunc ;==>_ChoixRadars ; Fonction pour tester si une RadioBox est cochée. Func _IsChecked($control) Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED EndFunc ;==>_IsChecked