J'ai besoin de traiter un fichier de points gps issu de http://www.gpspassion.com.
Le programme est terminé depuis pas mal de temps (merci Tlem), mais depuis quelques temps il y a deux lignes en début de fichier qui me plante la conversion.
Je souhaiterais donc les enlever avant le traitement .
voici à quoi ressemble les premières lignes du fichier à traiter (une ligne avac un ; en début), puis une ligne vide:
► Afficher le texte
Code : Tout sélectionner
; This Ascii PoiFile was generated on 04/05/2010 by PoiEdit, ©2002-2005 by Dnote Software (http://www.dnote.nl). All rights reserved.
1.85079, 48.24016, "RD001"
1.85299, 48.12976, "RD002"
1.84200, 48.02074, "RD003"► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
#include <File.au3>
If Not FileExists("Settings.ini") Then
IniWrite("Settings.ini", "SETTINGS", "Distance", "500")
IniWrite("Settings.ini", "SETTINGS", "Units", "M")
IniWrite("Settings.ini", "SETTINGS", "Maxhdg", "")
IniWrite("Settings.ini", "SETTINGS", "Minhdg", "")
EndIf
Global $GpxDistance = IniRead("Settings.ini", "SETTINGS", "Distance", "")
Global $GpxUnits = IniRead("Settings.ini", "SETTINGS", "Units", "")
Global $GpxMaxhdg = IniRead("Settings.ini", "SETTINGS", "Maxhdg", "")
Global $GpxMinhdg = IniRead("Settings.ini", "SETTINGS", "Minhdg", "")
gpspassion2ini()
Func gpspassion2ini()
$vFic_RF2 = @ScriptDir & "\GpsPassion\radarsF.asc"
$vFic_RFR2 = @ScriptDir & "\GpsPassion\radarsFR.asc"
$vFic_RM2 = @ScriptDir & "\GpsPassion\radarsM.asc"
If $vFic_RF2 & $vFic_RFR2 & $vFic_RM2 <> "" Then
$Distance2 = $GpxDistance
$Maxhdg2 = $GpxMaxhdg
$Minhdg2 = $GpxMinhdg
Dim $aRF2, $aRFR2, $aRM2
[color=#FF0000] _FileReadToArray($vFic_RF2, $aRF2)
_ArrayDelete($aRF2,1)
_ArrayDelete($aRF2,1)
FileDelete($vFic_RF2)
For $i=1 to $aRF2[0]
If $aRF2[$i]<>"" Then FileWriteLine($vFic_RF2,$aRF2[$i])
Next
_ArrayDelete($aRF2, 0)
_FileReadToArray($vFic_RFR2, $aRFR2)
_ArrayDelete($aRFR2,1)
_ArrayDelete($aRFR2,1)
FileDelete($vFic_RFR2)
For $i=1 to $aRFR2[0]
If $aRFR2[$i]<>"" Then FileWriteLine($vFic_RFR2,$aRFR2[$i])
Next
_ArrayDelete($aRFR2, 0)
_FileReadToArray($vFic_RM2, $aRM2)
_ArrayDelete($aRM2,1)
_ArrayDelete($aRM2,1)
FileDelete($vFic_RM2)
For $i=1 to $aRM2[0]
If $aRM2[$i]<>"" Then FileWriteLine($vFic_RM2,$aRM2[$i])
Next
_ArrayDelete($aRM2, 0)[/color]
_FileReadToArray($vFic_RF2, $aRF2)
_FileReadToArray($vFic_RFR2, $aRFR2)
_FileReadToArray($vFic_RM2, $aRM2)
Dim $sRF2, $sRFR2, $sRM2
If IsArray($aRF2) Then
$aRF2 = _DoIt2($aRF2, "RADAR_FIXE", $Unites2, $Maxhdg2, $Minhdg2, $Distance2)
$sRF2 = _ArrayToString($aRF2, @CRLF)
EndIf
If IsArray($aRFR2) Then
$aRFR2 = _DoIt2($aRFR2, "RADAR_FEU_ROUGE", $Unites2, $Maxhdg2, $Minhdg2, $Distance2)
$sRFR2 = _ArrayToString($aRFR2, @CRLF)
EndIf
If IsArray($aRM2) Then
$aRM2 = _DoIt2($aRM2, "RADAR_MOBILE", $Unites2, $Maxhdg2, $Minhdg2, $Distance2)
$sRM2 = _ArrayToString($aRM2, @CRLF)
EndIf
FileWrite("gpsexec.ini", $sRF2 & @CRLF & $sRFR2 & @CRLF & $sRM2 )
Msgbox(0,"Info !!!",Conversion is finished !")
Else
Msgbox(0,"Info !!!","Error !!!")
EndIf
EndFunc
Func _DoIt2($aRadars2, $TypeRadar2, $Unt2, $Mxhdg2 = 0, $Mnhdg2 = 0, $Dst2 = 0)
Local $j, $Var, $Var2, $Longitude2, $Latitude2, $Vitesse2
Local $aTypeSpeed, $aTmp
For $j = 1 To $aRadars2[0]
$aRadars2[$j] = StringReplace($aRadars2[$j], ' ', '') ; On vire les espaces de la chaine.
$aRadars2[$j] = StringReplace($aRadars2[$j], '"', '') ; On vire les guillemets parasites.
$Var = StringSplit($aRadars2[$j], ",") ; On sépare en 3 éléments
$szLongitude = $Var[1] ; On récupère la longitude
$szLatitude = $Var[2] ; On récupère la latitude
If StringInStr($Var[3], "-") Then ; On vérifie si la 3iem partie est composée de plusieurs éléments.
$aTypeSpeed = StringSplit($Var[3], "-") ; On sépare en plusieurs éléments
$szSpeed = StringLeft($aTypeSpeed[2], 3) ; On récupére les 3 premiers caractères du 2ème éléments
$szType = StringRegExpReplace($aTypeSpeed[1], '(\d)', '') ; On attribut la 1ere partie de la chaine à $szType sans les chiffres
$szID = StringRegExpReplace($aTypeSpeed[1], '(\D)', '') ; On attribut la 1ere partie de la chaine à $szType sans les lettres
Else
$szType = StringRegExpReplace($Var[3], '(\d)', '') ; On attribut la chaine $Var[3] à $szType sans les chiffres
$szID = StringRegExpReplace($Var[3], '(\D)', '') ; On attribut la 1ere partie de la chaine à $szType sans les lettres
$szSpeed = "" ; La vitesse n'existe pas.
EndIf
$aRadars2[$j] = $szLatitude & ',' & $szLongitude & ',' & $Mnhdg2 & ',' & $Mxhdg2 & ',' & _
$Dst2 & ',' & $Unt2 & ',"' & $TypeRadar2 & "_" & $szSpeed &'"'
Next
_ArrayDelete($aRadars2, 0) ; On supprime le nombre d'élément du tableau
Return $aRadars2
EndFunc ;==>_DoIt2Merci d'avance





