[R] Fonction _Arraydelete dans fichier.txt

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Nowaire
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 22 sept. 2010 22:28
Localisation : Trois-Rivières, Canada
Status : Hors ligne

[R] Fonction _Arraydelete dans fichier.txt

#1

Message par Nowaire »

Bonjour,

J'ai un script de signature Outlook qui fonctionn très bien.
Mon script crée une signature corporative pour Outlook pour chaques utilisateurs du domaine en effectuant une requête Ldap et en modifiant un fichier texte source par les informations de la dites requêtes.

La ou j'ai un problème, c'est que certains usagés n'ont pas d'information dans certain champ et comme résultat, la signature aura certaine ligne vide.

J'ai tenté d'insérer la fonction _Arraydelete et _Arraysearch sans résultat. J'ai une erreur de syntaxe (Normale pour un novice). J'ai effectué quelques recherches sur ce forum et sur google et recueillis quelques indices mais rien de concret pour mon problème.

Je solicite votre expérience en la matière et vous remercie à l'avance.

Voici une parti de mon code, la ligne de texte que j'aimerais supprimer concerne seulement les sections "faxnumber" et "mobilenumber".
► Afficher le texte
Merci et au plaisir de voir vos commentaires

Nowaire n'est pas introuvable
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Fonction _Arraydelete dans fichier.txt

#2

Message par sylvanie »

Bonsoir,
et bien justement, il faut remplacer par rien comme vous l'avez fait.
Maintenant ce qu'il manque c'est la suppression des lignes vides du fichier.
Pour ceci, avant d'effectuer le
FileCopy($filename1,$sigpath & "\" & $sigtxt,1)

vous allez inserrez ceci (si ça vous va biensûr ^^) :

Code : Tout sélectionner

$contenu=FileRead($filename1)
$contenu=StringRegExpReplace($contenu,"(\x0D\x0A){2,}",@CRLF)
FileDelete($filename1)
FileWrite($filename1,$contenu)
 
premiere ligne : on buffurise tout le texte
deuxième on recherche dans ce buffer, toutes les séquences de 2 retours chariots ou plus pour les supprimer
3 - on effece le fichier
4 - on saue le buffer nettoyé
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Nowaire
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 22 sept. 2010 22:28
Localisation : Trois-Rivières, Canada
Status : Hors ligne

Re: [..] Fonction _Arraydelete dans fichier.txt

#3

Message par Nowaire »

Merci sylvanie pour cette proposition
Maintenant ce qu'il manque c'est la suppression des lignes vides du fichier.
Pour ceci, avant d'effectuer le
FileCopy($filename1,$sigpath & "\" & $sigtxt,1
Malheureusement cette option ne peu s'appliquer, mon mandat doit respecter un model de signature préci.
Voici ce model type:
-------------------------------------------------------
_____________________________________
namenamename
titletitletitle

department
streetAddress
citycitycity
zipzipzip

emailemailemail
Téléphone: offnumoffnumoffnum poste diddiddid
Télécopieur : faxfaxfax
Cellulaire: mobilemobilemobile
________________________________________
-------------------------------------------------------------

Les espaces après le titre doivent demeurrer, comme je le disait,ma seule embuche est lorsque j'ai un usager qui à un téléphone mobile, mais pas de fax !
Sinon, tous serais impécable.

Je vais peut-être essayer de formuler une condition du genre, si fax est vide then remplace fax par mobile.

Ah mais j'y pense cela non plus ne fera pas car sous la dernière information je dois respecter une ligne vide et une ligne continue.

Merci encore et au plaisir de vous relire sur le sujet :wink:
Nowaire n'est jamais perdu, par contre il est toujours à la recherche du bon chemin !
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Fonction _Arraydelete dans fichier.txt

#4

Message par sylvanie »

Nowaire a écrit :Malheureusement cette option ne peu s'appliquer, mon mandat doit respecter un model de signature préci.
Ah bah voilà on ne me dit jamais rien à moi (voir dernier épisode de la saison 1 du donjon de Naheulbeuk ^^ )

et bien voilà ce qu'on va faire :
si la donnée est vide on va faire un
_ReplaceStringInFile($filename1,"Télécopieur: faxfaxfax","PLEASEDELETEME") à la place de "" (pareil pour le mobile)

puis on reprends le stringregexpreplace proposé en le modifiant ainsi :

$contenu=StringRegExpReplace($contenu,"(PLEASEDELETEME\x0D\x0A)","")

Ainsi le nombre se retours chariots des autres sections est préservé.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Nowaire
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 22 sept. 2010 22:28
Localisation : Trois-Rivières, Canada
Status : Hors ligne

Re: [..] Fonction _Arraydelete dans fichier.txt

#5

Message par Nowaire »

Moi qui croyait avoir tout dit, voici l'occasion de sortir à nouveau cette citation: :D
Ah bah voilà on ne me dit jamais rien à moi
Voilà oui, oui, si près du but, mon problème est réglé pour ma signature automatique en format texte.
Mais avant d'inscrire un petit [R] au début de mon sujet j'aimerai m'excuser d'avoir omis de vous dire mon script effectue aussi une création de la signature Htm et rtf.

Dans les 2 cas, la petite commande magique que vous m'avez transmit ne fonctionne pas.
Je me retrouve avec PLEASEDELETEME au lieu du #télécopieur.

Voici mon code pour les 3 signature, désolé, j'aurais cru que cette fonction aurait été viable pour les 3 fichiers.
► Afficher le texte
Mille Merci et bon week-end.
Nowaire n'est jamais perdu, par contre il est toujours à la recherche du bon chemin !
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Fonction _Arraydelete dans fichier.txt

#6

Message par sylvanie »

Pour le html et le rtf, ça doit sûrement venir de la finc de ligne, qui doit différé légèrement de \r\n collé derrière le dernier caractère.
Je m'y plonerai plus tard ...
Bon week end
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Fonction _Arraydelete dans fichier.txt

#7

Message par sylvanie »

pour le html, si tous les <br> sont suivis d'un retours chariots à la DOS (CRLF), alors l'expression
$contenu=StringRegExpReplace($contenu,"(PLEASEDELETEME[^\x0D]*\x0D\x0A)","")

va couvrir le cas texte et HTML.

pour le RTF, c'est plus compliqué, car avec cette méthode je corromps le format RTF. Faudra peut être passer par une UDF WORD ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Nowaire
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 22 sept. 2010 22:28
Localisation : Trois-Rivières, Canada
Status : Hors ligne

[R] Fonction _Arraydelete dans fichier.txt

#8

Message par Nowaire »

La modification pour la section Htm est concluante.

Je peu désormais considérer que mon problème est résolu avec la fonction "StringRegExpReplace($contenu".
Je tiens à remercier sylvanie pour son aide et son expérience en la matière :wink: .

Parfois la simplicité deviens complexe surtout pour un néophite en la matière comme moi.

Mon projet de signature corporative est presque à terme, me manque seulement la suppression de la ligne "PLEASEDELETEME" du fichier .RTF. Je continue mes recherches à ce sujet.
Par contre , malgré cette variable, je commence mes tests en prod. aujourd'hui sur quelques usagers(+/-25 user) puisque les signatures en format .rtf ne sont presque plus utilisées.

Merci encore et si jamais vous avec une piste pour mon fichier .rtf, n'hésitez pas à laisser un post. :D
Nowaire n'est jamais perdu, par contre il est toujours à la recherche du bon chemin !
Répondre