#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 ; cette ligne peut être effacée après avoir vu à quoi ressemblait un tableau. ; Déclaration des variables utilisées pour la suite du script. Dim $aRadars, $Fichier, $Var, $Var2, $Longitude, $Latitude, $Vitesse, $TypeRadar, $Res , $Distance , $Concatener 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 & ',' & $MinHdg & ',' & $MaxHdg & ',' & $Distance & ',' & $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() ; Cette partie crée la GUI qui sera affichée. #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("CSV Convert for GPSExec", 510, 380, -1, -1) $IDFic = GUICtrlCreateInput("", 16, 40, 250, 21) $Choix = GUICtrlCreateButton("...", 270, 40, 20, 20, 0) $RF = GUICtrlCreateRadio("Radars Fixes", 24, 80, 113, 17) $RM = GUICtrlCreateRadio("Radars Mobiles", 24, 112, 113, 17) $RFR = GUICtrlCreateRadio("Radars Feu Rouge", 24, 144, 113, 17) $ZD = GUICtrlCreateRadio("Zone Dangereuse", 24, 176, 113, 17) $Concatener = GUICtrlCreateRadio("Concaténer", 24, 206, 113, 17) $Annuler = GUICtrlCreateButton("Annuler", 144, 316, 75, 25, 0) $OK = GUICtrlCreateButton("OK", 224, 316, 75, 25, 0) $Label1 = GUICtrlCreateLabel("Choix du fichier csv radars :", 16, 16, 194, 20) $APropos = GUICtrlCreateButton(" À propos", 220, 0, 75, 35) $LabelUnites = GUICtrlCreateLabel("Unités: (MI,FT,YD,KM,M)", 30, 240, 194, 20) $Unites = GUICtrlCreateInput("", 80, 235, 50, 25) $LabelMinHdg = GUICtrlCreateLabel("MINHDG:", 30, 280, 194, 20) $MinHdg = GUICtrlCreateInput("", 80, 275, 50, 25) $LabelMaxHdg = GUICtrlCreateLabel("MINHDG:", 150, 280, 194, 20) $MaxHdg = GUICtrlCreateInput("", 200, 275, 50, 25) $LabelDist = GUICtrlCreateLabel("DISTANCE:", 270, 280, 194, 20) $Distance = GUICtrlCreateInput("", 330, 275, 50, 25) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") GUICtrlSetState($RF, $GUI_CHECKED) ; Je choisi par défaut 'Radars Fixes" (il en faut bien un premier ...) GUISetState(@SW_SHOW) ; Affichage de la GUI #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 ; Si le bouton ... à été cliqué. $Fichier = FileOpenDialog("Choisissez le fichier à modifier", @ScriptDir, "Fichier asc (*.csv)", 1) If $Fichier <> "" Then GUICtrlSetData($IDFic, $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($IDFic) ; 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($RF) Then $TypeRadar = "RADAR_FIXE" If _IsChecked($RM) Then $TypeRadar = "RADAR_MOBILE" If _IsChecked($RFR) Then $TypeRadar = "RADAR_FEU_ROUGE" If _IsChecked($ZD) Then $TypeRadar = "ZONE_DANGEREUSE" ;And If _IsChecked($Concatener) Then 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