[R] Formatage d'un fichier texte particulier
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Si le final vous convient, c'est l'essentiel.
Pour le multi-langage, vous avez plusieurs solutions.
Moi j'ai adopté celle-ci : http://www.autoitscript.fr/forum/viewto ... 501#p11501
Regardez les sources dans le fichier RDG.zip.
Pour le multi-langage, vous avez plusieurs solutions.
Moi j'ai adopté celle-ci : http://www.autoitscript.fr/forum/viewto ... 501#p11501
Regardez les sources dans le fichier RDG.zip.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Bonjour Tlem ,
J'essai de réaliser une version de votre programme pour un format de fichier en entrée légèrement différent .
Mon format d'entrée est le suivant :
Longitude,Latitude,"NuméroPoi-Vitesse-TypeRadar"
et voici ce que j'obtient en sortie :
Latitude,Longitude,MinHdg,MaxHdg,Distance,Unité,Vitesse_NuméroPoi
Peut être une erreur de déclaration de mon tableau ?
Il ne me manquerait pas la variable $Typeradar2 ?
Merci de votre aide
Pierre
J'essai de réaliser une version de votre programme pour un format de fichier en entrée légèrement différent .
Mon format d'entrée est le suivant :
Longitude,Latitude,"NuméroPoi-Vitesse-TypeRadar"
- -0.50264, 47.47646, "RD014"
1.84840, 47.93970, "RD011"
0.72227, 44.39856, "RF1033-050km/h-R"
1.23701, 45.80560, "RF0164-050km/h-F"
3.03310, 42.63783, "RF1448-050km/h-R"
3.84144, 43.60896, "RF0431-050km/h-F"
2.13442, 46.02538, "RF1475-050km/h-F"
Code : Tout sélectionner
Func _DoIt2($aRadars2, $TypeRadar2, $Unt2, $Mxhdg2 = 0, $Mnhdg2 = 0, $Dst2 = 0)
Local $j, $Var, $Var2, $Longitude2, $Latitude2, $Vitesse2
For $j = 1 To $aRadars2[0]
$Var = StringSplit($aRadars2[$j], ",");sépare en 3 éléments
$Longitude2 = StringReplace($Var[1], " ", "");efface espace dans le résultat
$Latitude2 = StringReplace($Var[2], " ", "");efface espace dans le résultat
$Var2 = StringSplit($Var[3], '-"');sépare le 3ème élément en 3 éléments
$TypeRadar2 = $Var2[3];devrais récupérer le 3ème élément du 1er 3ème element
$Vitesse2 = $Var2[2];devrais récupérer le 2ème éléments du 1er 3ème élément
$Vessai = $Var2[1]
If $TypeRadar2 = "" Then $TypeRadar2 = 0
If $Vitesse2 = "" Then $Vitesse2 = 0
; MsgBox (4096, "La vitesse est de :" ,$TypeRadar2)
$aRadars2[$j] = $Latitude2 & ',' & $Longitude2 & ',' & $Mxhdg2 & ',' & $Mnhdg2 & ',' & _
$Dst2 & ',' & $Unt2 & ',"' & $TypeRadar2 & "_" & $Vitesse2 & '"'
Next
Latitude,Longitude,MinHdg,MaxHdg,Distance,Unité,Vitesse_NuméroPoi
- 47.47646,-0.50264,,,,KM,"0_RD014"
47.93970,1.84840,,,,KM,"0_RD011"
47.93915,1.84867,,,,KM,"0_RD004"
47.98674,1.85758,,,,KM,"0_RD010"
44.66367,-0.38435,,,,KM,"050km/h_RF0017"
45.80171,-0.13479,,,,KM,"050km/h_RF0825"
44.85568,-0.10974,,,,KM,"050km/h_RF0255"
44.85175,0.02923,,,,KM,"050km/h_RF0794"
44.50250,0.16778,,,,KM,"050km/h_RF0168"
44.39856,0.72227,,,,KM,"050km/h_RF1033"
45.80560,1.23701,,,,KM,"050km/h_RF0164"
Peut être une erreur de déclaration de mon tableau ?
Il ne me manquerait pas la variable $Typeradar2 ?
Merci de votre aide
Pierre
Modifié en dernier par pierrotm777 le mar. 10 févr. 2009 16:05, modifié 5 fois.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Quelques problèmes dans votre message :
1 - Entre ce que vous décrivez en première partie et entre l'exemple fourni, il n'y à pas de corrélation !
2 - Vous n'êtes pas obligé de mettre 37 lignes d'exemples. 5 devrait suffire.
3 - Vous n'avez pas utilisé la balise de code pour votre ... code.
Corrigez votre message.
1 - Entre ce que vous décrivez en première partie et entre l'exemple fourni, il n'y à pas de corrélation !

2 - Vous n'êtes pas obligé de mettre 37 lignes d'exemples. 5 devrait suffire.
3 - Vous n'avez pas utilisé la balise de code pour votre ... code.

Corrigez votre message.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Bonjour Tlem,
J'ai tenté de modifier un peu la fonction _DoIt2
mais pour le format d'entrée ci-dessous :
Longitude,Latitude,"NuméroPoi-Vitesse-TypeRadar"
7.16626, 48.26463, "RF1582-050km/h-R"
je devrais avoir RF1582 dans $Var2[1] , 050 dans $Var2[2] et R dans $Var2[3] .
Je ne comprends pas cette ligne :
$Var2 = StringSplit($Var[3], '-"') ou du moins '-"' alors que "-" devrais suffir ?
Je sèche !!!
J'ai tenté de modifier un peu la fonction _DoIt2
Code : Tout sélectionner
Func _DoIt2($aRadars2, $TypeRadar2, $Unt2, $Mxhdg2 = 0, $Mnhdg2 = 0, $Dst2 = 0)
Local $j, $Var, $Var2, $Longitude2, $Latitude2, $Vitesse2
For $j = 1 To $aRadars2[0]
$Var = StringSplit($aRadars2[$j], ",");sépare en 3 éléments
$Longitude2 = StringReplace($Var[1], " ", "");efface espace dans le résultat
$Latitude2 = StringReplace($Var[2], " ", "");efface espace dans le résultat
$Var2 = StringSplit($Var[3], '-"');sépare le 3ème élément en 3 éléments
$Vitesse2 = StringReplace($Var2[3], "km/h" , "");devrais récupérer le 2ème éléments du 1er 3ème élément
$TypeRadar2 = $Var2[2];devrais récupérer le 3ème élément du 1er 3ème element
$Nom_Poi2 = $Var2[1]
If $TypeRadar2 = "" Then $TypeRadar2 = 0
If $Vitesse2 = "" Then $Vitesse2 = 0
If $Nom_Poi2 = "" Then $Nom_Poi2 = 0
; MsgBox (4096, "La vitesse est de :" ,$Vitesse2)
$aRadars2[$j] = $Latitude2 & ',' & $Longitude2 & ',' & $Mxhdg2 & ',' & $Mnhdg2 & ',' & _
$Dst2 & ',' & $Unt2 & ',"' & $TypeRadar2 & "_" & $Vitesse2 & '"'
Next
Longitude,Latitude,"NuméroPoi-Vitesse-TypeRadar"
7.16626, 48.26463, "RF1582-050km/h-R"
je devrais avoir RF1582 dans $Var2[1] , 050 dans $Var2[2] et R dans $Var2[3] .
Je ne comprends pas cette ligne :
$Var2 = StringSplit($Var[3], '-"') ou du moins '-"' alors que "-" devrais suffir ?
Je sèche !!!
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Ha bon ...pierrotm777 a écrit :Je sèche !!!
Vous êtes mouillé ?

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Oui je patoge !!!
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
A condition que la valeur d'entrée soit formatée comme ceci : 7.16626, 48.26463, "RF1582-050km/h-R"
pour la troisième partie, le type de radar doit être en 2 lettres puis le numéro de radar en 4 chiffres puis le trait d'union et enfin la vitesse en 3 chiffres, alors ceci devrait fonctionner (A adapter si nécessaire) :
pour la troisième partie, le type de radar doit être en 2 lettres puis le numéro de radar en 4 chiffres puis le trait d'union et enfin la vitesse en 3 chiffres, alors ceci devrait fonctionner (A adapter si nécessaire) :
Code : Tout sélectionner
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
$Longitude2 = $Var[1]
$Latitude2 = $Var[2]
$Var2 = StringSplit($Var[3], '-') ; On Sépare le 3ème élément en 3 éléments
$Vitesse2 = StringLeft($Var2[2], 3) ; On récupére les 3 premiers caractères du 2ème éléments
$TypeRadar2 = StringLeft($Var2[1], 2) ; On récupére les 2 premières lettre du 1er élément
$Nom_Poi2 = StringRight($Var2[1], 4) ; On récupère les 4 derniers chiffre du 1er élément.
If $TypeRadar2 = "" Then $TypeRadar2 = 0
If $Vitesse2 = "" Then $Vitesse2 = 0
If $Nom_Poi2 = "" Then $Nom_Poi2 = 0
$aRadars2[$j] = $Latitude2 & ',' & $Longitude2 & ',' & $Mxhdg2 & ',' & $Mnhdg2 & ',' & _
$Dst2 & ',' & $Unt2 & ',"' & $TypeRadar2 & "_" & $Vitesse2 & '"'
Next
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Voila ce que j'obtient !!
C:\tmp\AutoIt\Csv2Gpsexec\csv2gpsexec_essai_lang_2.au3 (531) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$Vitesse2 = StringLeft($Var2[2], 3)
$Vitesse2 = StringLeft(^ ERROR
->17:16:30 AutoIT3.exe ended.rc:1
+>17:16:31 AutoIt3Wrapper Finished
On dirait que l'on utilise plus de variable qu'il n'y en a de définit ..
C:\tmp\AutoIt\Csv2Gpsexec\csv2gpsexec_essai_lang_2.au3 (531) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$Vitesse2 = StringLeft($Var2[2], 3)
$Vitesse2 = StringLeft(^ ERROR
->17:16:30 AutoIT3.exe ended.rc:1
+>17:16:31 AutoIt3Wrapper Finished
On dirait que l'on utilise plus de variable qu'il n'y en a de définit ..
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Comme je l'ai dit, tout dépend de ce qui est mis en entrée.
J'ai dit aussi qu'il faudrait sans doute adapter ...
J'ai dit aussi qu'il faudrait sans doute adapter ...

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Bonjour Tlem,
Effectivement , je n'avais pas bien réalisé que votre fonction fonctionne
parfaitement avec le format mentionné .
Le programme sort seul uniquement si il manque :
$Var2[2] et $Var2[3] (voir ex: en rouge ci-dessous)
1.90817, 48.52327, "RD007"
2.41893, 48.76256, "RF0052-030km/h-F" .
Hors ce fichier comporte en entrée quelques lignes avec uniquement RD puis 3 chiffres .
Je pensais donc m'en accommoder en faisant un test sur $Var2[2] et $Var2[3] et si vides ,
leur attribuer une valeur afin que le traitement suivant soit possible .
Je voyais ce test comme suit :
Mais le programme me renvoie ceci:
C:\tmp\AutoIt\Csv2Gpsexec\csv2gpsexec_essai_lang.au3 (513) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
If $Var2[2] = "" Then $Var2[2] = "000"
If ^ ERROR
->14:17:48 AutoIT3.exe ended.rc:1
+>14:17:49 AutoIt3Wrapper Finished
>Exit code: 1 Time: 7.258
Je plane !!!
Effectivement , je n'avais pas bien réalisé que votre fonction fonctionne
parfaitement avec le format mentionné .
Le programme sort seul uniquement si il manque :
$Var2[2] et $Var2[3] (voir ex: en rouge ci-dessous)
1.90817, 48.52327, "RD007"
2.41893, 48.76256, "RF0052-030km/h-F" .
Hors ce fichier comporte en entrée quelques lignes avec uniquement RD puis 3 chiffres .
Je pensais donc m'en accommoder en faisant un test sur $Var2[2] et $Var2[3] et si vides ,
leur attribuer une valeur afin que le traitement suivant soit possible .
Je voyais ce test comme suit :
Code : Tout sélectionner
$Var2 = StringSplit($Var[3], '-') ; On Sépare le 3ème élément en 3 éléments
[color=#FF0000]If $Var2[2] = "" Then $Var2[2] = "000";donne la valeur 000 à $Var2[2]
If $Var2[3] = "" Then $Var2[3] = "0";donne la valeur 000 à $Var2[3][/color]
$Vitesse2 = StringLeft($Var2[2], 3) ; On récupére les 3 premiers caractères du 2ème éléments
$TypeRadar2 = StringLeft($Var2[1], 2) ; On récupére les 2 premières lettre du 1er élément
$Nom_Poi2 = StringRight($Var2[1], 4) ; On récupère les 4 derniers chiffre du 1er élément.
C:\tmp\AutoIt\Csv2Gpsexec\csv2gpsexec_essai_lang.au3 (513) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
If $Var2[2] = "" Then $Var2[2] = "000"
If ^ ERROR
->14:17:48 AutoIT3.exe ended.rc:1
+>14:17:49 AutoIt3Wrapper Finished
>Exit code: 1 Time: 7.258
Je plane !!!
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Pour essayer de trouver un traitement optimal, il serait bien que vous donniez l'intégralité des données susceptibles de nous intéresser.
Sur les chaînes d'entrée, tel que celles ci :
Le type et le numéro de radar peuvent être indiqués comment ?
Le type => Quels sont les types possible (RD RF ZD ...) ?
Le numéro du radar => Sur 1, 2, 3 , 4 chiffres ?
Si la vitesse est indiquée, est-elle toujours séparée par le trait d'union ?
La vitesse est-elle toujours représentée par un nombre à 3 chiffres ?
Voilà avec les bases bien misent à plat, on devrait pouvoir s'en sortir.
Sur les chaînes d'entrée, tel que celles ci :
Puisque pour la longitude et la latitude il n'y à aucun problème, c'est sur la troisième partie qu'il faut ce concentrer.1.90817, 48.52327, "RD007"
2.41893, 48.76256, "RF0052-030km/h-F"
Le type et le numéro de radar peuvent être indiqués comment ?
Le type => Quels sont les types possible (RD RF ZD ...) ?
Le numéro du radar => Sur 1, 2, 3 , 4 chiffres ?
Si la vitesse est indiquée, est-elle toujours séparée par le trait d'union ?
La vitesse est-elle toujours représentée par un nombre à 3 chiffres ?
Voilà avec les bases bien misent à plat, on devrait pouvoir s'en sortir.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Bonjour Tlem,
Et merci encore de votre patience .
Je suis contient d'un manque de donnée de départ sur ce format ,
mais je ne pensais pas alors que le manque des 2 derniers champs nous poserais
un problème sur le reste du fichier car effectivement , boucle fonctionne pour
un format d'entrée tel que la deuxième ligne .
En fait je ne souhaite garder que 'type radar' et vitesse .
radarF.csv peut contenir ceci:
1.90817, 48.52327, "RD007" ; RD = ???
2.41893, 48.76256, "RF0052-030km/h-F" ;RF = radar fixe
4.31530, 48.96238, "RF1282-050km/h-R"
-0.70400, 44.74477, "RPL001-130km/h-F" ;RPL = radar poids lourd
Le numéro ne m'intéresse pas mais il a soit 3 ou 4 caractères .
Pour rester simple , le traitement final doit aboutir au même type de format que pour AlertGps.com ,
soit :
48.52327,1.90817,"RADAR_FIXE_0"
48.76256,2.41893,"RADAR_FIXE_030"
48.96238,4.31530,"RADAR_FIXE_050"
44.74477,-0.70400,"RADAR_FIXE_130"
radarM.csv peut contenir cela:
-4.55262, 48.44663, "RM00001-090km/h"
-4.51332, 48.41050, "RM00002-050km/h"
Ici le numéro a toujours 5 caractères .
De même , le traitement final donnera ici:
48.44663,-4.55262,"RADAR_MOBILE_090"
48.41050,-4.51332,"RADAR_MOBILE_050"
Pour radarM cela me semble plus facile car le format est toujours le même
sauf qu'il est encore différent de radarF .
Je pense que la boucle doit tester si le contenu est bien celui de radar fixe pour radarF.csv ,( test sur RD,RF,RPL)
et que le contenu de radarM.csv est bien des radars mobiles , (test sur RM) .
Mon idée est donc de créer une fonction _DoIt2RM et de l'associer uniquement à:
et de garder votre premiere boucle _DoIt2 mais à adapter pour :
Hoo , ça commence à chauffer !!
J'aurais voulu rajouter un test sur le contenu du fichier RF et RM par exemple afin d'interdire
le traitement d'un fichier RF dans la box RM et inversement , du genre :
MsgBox(64, "Fichier incompatible !!!", "Choisissez uniquement" & @CRLF & "un fichier radarsF.csv") , mais je ne vois pas bien où la placer !
L'idéal serait dés le FileOpenDialog .
Merci encore pour votre aide
Pierre
Et merci encore de votre patience .
Je suis contient d'un manque de donnée de départ sur ce format ,
mais je ne pensais pas alors que le manque des 2 derniers champs nous poserais
un problème sur le reste du fichier car effectivement , boucle fonctionne pour
un format d'entrée tel que la deuxième ligne .
En fait je ne souhaite garder que 'type radar' et vitesse .
radarF.csv peut contenir ceci:
1.90817, 48.52327, "RD007" ; RD = ???
2.41893, 48.76256, "RF0052-030km/h-F" ;RF = radar fixe
4.31530, 48.96238, "RF1282-050km/h-R"
-0.70400, 44.74477, "RPL001-130km/h-F" ;RPL = radar poids lourd
Le numéro ne m'intéresse pas mais il a soit 3 ou 4 caractères .
Pour rester simple , le traitement final doit aboutir au même type de format que pour AlertGps.com ,
soit :
48.52327,1.90817,"RADAR_FIXE_0"
48.76256,2.41893,"RADAR_FIXE_030"
48.96238,4.31530,"RADAR_FIXE_050"
44.74477,-0.70400,"RADAR_FIXE_130"
radarM.csv peut contenir cela:
-4.55262, 48.44663, "RM00001-090km/h"
-4.51332, 48.41050, "RM00002-050km/h"
Ici le numéro a toujours 5 caractères .
De même , le traitement final donnera ici:
48.44663,-4.55262,"RADAR_MOBILE_090"
48.41050,-4.51332,"RADAR_MOBILE_050"
Pour radarM cela me semble plus facile car le format est toujours le même
sauf qu'il est encore différent de radarF .
Je pense que la boucle doit tester si le contenu est bien celui de radar fixe pour radarF.csv ,( test sur RD,RF,RPL)
et que le contenu de radarM.csv est bien des radars mobiles , (test sur RM) .
Mon idée est donc de créer une fonction _DoIt2RM et de l'associer uniquement à:
Code : Tout sélectionner
If IsArray($aRM2) Then
$aRM2 = [color=#FF0000]_DoIt2RM[/color]($aRM2, "RADAR_MOBILE", $Unites2, $Maxhdg2, $Minhdg2, $Distance2)
$sRM2 = _ArrayToString($aRM2, @CRLF)
EndIf
Code : Tout sélectionner
If IsArray($aRF2) Then
$aRF2 = [color=#FF0000]_DoIt2[/color]($aRF2, "RADAR_FIXE", $Unites2, $Maxhdg2, $Minhdg2, $Distance2)
$sRF2 = _ArrayToString($aRF2, @CRLF)
EndIf

J'aurais voulu rajouter un test sur le contenu du fichier RF et RM par exemple afin d'interdire
le traitement d'un fichier RF dans la box RM et inversement , du genre :
MsgBox(64, "Fichier incompatible !!!", "Choisissez uniquement" & @CRLF & "un fichier radarsF.csv") , mais je ne vois pas bien où la placer !
L'idéal serait dés le FileOpenDialog .
Merci encore pour votre aide
Pierre
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Bon, j'ai bien une idée, mais il me faut un peut de temps pour la peaufiner et la tester.
RD signifie Radar de distance.
N'avez vous pas dans ce fichier le type RFR (Radar Feu Rouge) ?
RD signifie Radar de distance.
N'avez vous pas dans ce fichier le type RFR (Radar Feu Rouge) ?
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Non,
Je ny vois que RD ou Rf ou RPL .
Je vous joint les fichiers radars F et M pour un test plus facile.
Pierre
Je ny vois que RD ou Rf ou RPL .
Je vous joint les fichiers radars F et M pour un test plus facile.
Pierre
- Fichiers joints
-
- radarF&M.zip
- (101.12 Kio) Téléchargé 72 fois
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Bon, alors voici une fonction qui me semble universelle pour le format de tout les fichiers :
La première partie n'est là que pour vous montrer le résultat par rapport aux éléments que vous m'avez donné.
Je pense que cette fonction va simplifier votre code car elle reprend plusieurs de vos fonctions.
► Afficher le texte
Je pense que cette fonction va simplifier votre code car elle reprend plusieurs de vos fonctions.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Bonjour Tlem,
Si je comprend bien, je dois remplacer les fonctions _DoIt2 et _DoIt2RM par votre fonction .
J'ai remplacé aussi _DoIt2 et _DoIt2RM par _GetRadInfos dans les lignes qui suivent :
Voila ce que j'obtien au lancement:
Si je comprend bien, je dois remplacer les fonctions _DoIt2 et _DoIt2RM par votre fonction .
J'ai remplacé aussi _DoIt2 et _DoIt2RM par _GetRadInfos dans les lignes qui suivent :
Code : Tout sélectionner
Dim $sRF2, $sRM2
If IsArray($aRF2) Then
$aRF2 = _GetRadInfos($aRF2, "RADAR_FIXE", $Unites2, $Maxhdg2, $Minhdg2, $Distance2)
$sRF2 = _ArrayToString($aRF2, @CRLF)
EndIf
If IsArray($aRM2) Then
$aRM2 = _GetRadInfos($aRM2, "RADAR_MOBILE", $Unites2, $Maxhdg2, $Minhdg2, $Distance2)
$sRM2 = _ArrayToString($aRM2, @CRLF)
EndIf
Voila ce que j'obtien au lancement:
► Afficher le texte
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Pour l'erreur, je vous invite à lire ce que j'ai mis en commentaire sur la première ligne de l'exemple.
Quand à remplacer les fonctions _DoIt.. ce ne sera pas aussi simple.
Les fonctions _DoIt.. ont pour 1er argument un tableau, hors la fonction que je vous ais proposé ne prend en compte qu'une chaîne.
Vous devez donc remplacer les deux fonctions _DoIt.. par une fonction unique qui utilisera la nouvelle fonction pour extraire les informations de la chaîne de caractère.
Pour essayer d'être simple, vous donnez à la fonction _GetRadInfos la chaîne du radar à traiter : '-0.70400, 44.74477, "RPL001-130km/h-F"' par exemple et la fonction vous retourne les valeurs de : $szLongitude, $szLatitude, $szType, $szID, $szSpeed.
Evidement, vous ne devez pas modifier les variables en entrée (sauf la première qui est la chaîne à traiter).
A vous ensuite de faire la mise en forme de la chaîne avec ces éléments puis de la stocker dans le tableau à la place de l'ancienne chaîne (comme dans les fonctions _DoIt..).
Allez, allez, courage vous y êtes presque.

Quand à remplacer les fonctions _DoIt.. ce ne sera pas aussi simple.

Les fonctions _DoIt.. ont pour 1er argument un tableau, hors la fonction que je vous ais proposé ne prend en compte qu'une chaîne.
Vous devez donc remplacer les deux fonctions _DoIt.. par une fonction unique qui utilisera la nouvelle fonction pour extraire les informations de la chaîne de caractère.
Pour essayer d'être simple, vous donnez à la fonction _GetRadInfos la chaîne du radar à traiter : '-0.70400, 44.74477, "RPL001-130km/h-F"' par exemple et la fonction vous retourne les valeurs de : $szLongitude, $szLatitude, $szType, $szID, $szSpeed.
Evidement, vous ne devez pas modifier les variables en entrée (sauf la première qui est la chaîne à traiter).
A vous ensuite de faire la mise en forme de la chaîne avec ces éléments puis de la stocker dans le tableau à la place de l'ancienne chaîne (comme dans les fonctions _DoIt..).
Allez, allez, courage vous y êtes presque.

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Bonjour Tlem,
Contre toute attente, (de ma part), je pense être arrivé à une solution .
En fait, j'ai conservé la partie de mise en tableau .
J'ai adapté la fonction _GetRadInfos à la fonction _DoIt2 selon vos conseils :
Merci de vos conseils.
Pierre
Contre toute attente, (de ma part), je pense être arrivé à une solution .
En fait, j'ai conservé la partie de mise en tableau .
J'ai adapté la fonction _GetRadInfos à la fonction _DoIt2 selon vos conseils :
► Afficher le texte
Merci de vos conseils.
Pierre
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
J'ai créé un bouton transparent ou apparent avec condition dans chacun de mes quatre onglets
mais dans le 4ième , je vois tjs le bouton ...
J'essai d'utiliser la fonction FileInstall mais je n'y arrive pas .
J'ai bien noté que le chemin source doit être en dur mais pas le chemin destination .
A la compilation, j'ai le message suivant:
mais dans le 4ième , je vois tjs le bouton ...
Code : Tout sélectionner
$Google = GUICtrlCreateButton("Google Earth", 450, 190, 100, 40)
GUICtrlCreatePic(@ScriptDir & "\googleearth.jpg", 400, 190, 40, 40)
GUICtrlCreateLabel("See on"&@CRLF& "Google :", 325, 195, 200, 40)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
If Not FileExists(@ScriptDir & "\Radars_Fusion.csv") Then
GUICtrlSetState($Google,$GUI_DISABLE) ; Pour griser !
Else
GUICtrlSetState($Google,$GUI_ENABLE) ; Pour remettre en clair !
Endif
J'essai d'utiliser la fonction FileInstall mais je n'y arrive pas .
Code : Tout sélectionner
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\gpsbabel\gpsbabel.exe", @ScriptDir & "\gpsbabel\gpsbabel.exe", 0)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\gpsbabel\libexpat.dll", @ScriptDir & "\gpsbabel\libexpat.dll", 0)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\googleearth.jpg", @ScriptDir & "\googleearth.jpg", 0)
A la compilation, j'ai le message suivant:
- Fichiers joints
-
- erreur_compilation.jpg (19.66 Kio) Vu 5508 fois
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Formatage d'un fichier texte particulier
Bon,
J'ai trouvé mon problème sur mon bouton Google Earth, je n'avais pas les bons noms de variable .
Je souhaite cependant qu'il soit visible si des fichiers *Fusion.csv ou *_New.csv existent .
Je penser pouvoir écrire cela ainsi mais cela ne fonctionne pas !
Pour le fonctionnement du FileInstall , je viens de comprendre son fonctionnement:
Je suis oubligé de faire ceci:
Alors que j'aurais voulu cela:
J'ai trouvé mon problème sur mon bouton Google Earth, je n'avais pas les bons noms de variable .
Je souhaite cependant qu'il soit visible si des fichiers *Fusion.csv ou *_New.csv existent .
Je penser pouvoir écrire cela ainsi mais cela ne fonctionne pas !
Code : Tout sélectionner
$Google2 = GUICtrlCreateButton("Google Earth", 450, 190, 100, 40)
GUICtrlCreatePic(@ScriptDir & "\googleearth.jpg", 400, 190, 40, 40)
GUICtrlCreateLabel("See on"&@CRLF& "Google :", 325, 195, 200, 40)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
If Not FileExists(@ScriptDir & "[color=#FF0000]\*_New.csv;\*_Fusion.csv[/color]") Then
GUICtrlSetState($Google2,$GUI_DISABLE) ; Pour griser !
Else
GUICtrlSetState($Google2,$GUI_ENABLE) ; Pour remettre en clair !
Endif
Pour le fonctionnement du FileInstall , je viens de comprendre son fonctionnement:
Je suis oubligé de faire ceci:
Code : Tout sélectionner
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\gpsbabel.exe", @ScriptDir & "\gpsbabel.exe", 1)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\libexpat.dll", @ScriptDir & "\libexpat.dll", 1)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\googleearth.jpg", @ScriptDir & "\googleearth.jpg", 1)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\FR.jpg", @ScriptDir & "\FR.jpg", 1)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\EN.jpg", @ScriptDir & "\EN.jpg", 1)
Code : Tout sélectionner
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\gpsbabel.exe", @ScriptDir & "[color=#FF0000]\gpsbabel\[/color]gpsbabel.exe", 1)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\libexpat.dll", @ScriptDir & "[color=#FF0000]\gpsbabel\[/color]libexpat.dll", 1)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\googleearth.jpg", @ScriptDir & "\googleearth.jpg", 1)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\FR.jpg", @ScriptDir & "\FR.jpg", 1)
FileInstall("C:\tmp\AutoIt\Csv2Gpsexec\EN.jpg", @ScriptDir & "\EN.jpg", 1)