[R] Problème de guillemets dans GuiCtrlRead()

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
lerin57
Niveau 4
Niveau 4
Messages : 97
Enregistré le : mer. 30 sept. 2009 12:50
Status : Hors ligne

[R] Problème de guillemets dans GuiCtrlRead()

#1

Message par lerin57 »

Bonjour,

En rapport avec un autre sujet sur lequel je travaille actuellement, je rencontre un probleme que nombre d'entre vous ont surement déja eu.

Dans l'exemple qui suit, nous voulons envoyer un mail, via la fonction inetmail(), avec un préformatage dans le coprs du mail :

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <Inet.au3>


Local $nDest, $nObj, $nCorps ; Destinataire , Objet, Corps du message

Local $From = "toto"
Local $To = GUICtrlRead($nDest)
Local $Subject = GUICtrlRead($nObj)

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 593, 454, 192, 114)
$nDest = GUICtrlCreateInput("", 80, 24, 313, 21)
$Label1 = GUICtrlCreateLabel("A:", 58, 28, 14, 17)
$nObj = GUICtrlCreateInput("", 80, 112, 321, 21)
$Label3 = GUICtrlCreateLabel("Objet :", 40, 114, 35, 17)
$nCorps = GUICtrlCreateEdit("", 80, 208, 417, 137)
$Label4 = GUICtrlCreateLabel("Message", 80, 176, 47, 17)
$nSend = GUICtrlCreateButton("Envoyer", 256, 368, 100, 30, $BS_FLAT)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Select
        Case $nMsg = $GUI_EVENT_CLOSE
            Exit
        Case $nMsg = $nSend
            _envoie()
    EndSelect
WEnd

Func _envoie()

    $body = ("l'objet du mail est :" & @CR & @CR & GUICtrlRead($nCorps) & @CR & @CR & "cordialement")
    _INetMail(GUICtrlRead($nDest), GUICtrlRead($nObj), $body)
    Exit
EndFunc

 
Le probleme, c'est que si le champs $nCorps = GUICtrlCreateEdit("", 80, 208, 417, 137) contient des guillemets, la logique veut que le script se temrine, ce qui, suivant le client de messagerie, va tronquer le message, ou bien déclencher une erreur tels que "parametres invalide".

J'ai essayé d'utiliser une condition de type For ... In ... Next afin d'indiquer que si le champs $nCorps contient une guillemet, nous ajoutons ' " ' avant et après le résultat de lecture du champs.

Mais cela ne fonctionne pas.

Quelqu'un aurait il une astuce ? :roll:

En vous remerciant.
Modifié en dernier par lerin57 le mer. 20 janv. 2010 21:56, modifié 1 fois.
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..]Probleme de guillemets dans GuiCtrlRead()

#2

Message par pop45 »

Je comprend pas , tu peut expliquer un peut mieur
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
lerin57
Niveau 4
Niveau 4
Messages : 97
Enregistré le : mer. 30 sept. 2009 12:50
Status : Hors ligne

Re: [..]Probleme de guillemets dans GuiCtrlRead()

#3

Message par lerin57 »

C'est assez simple.

Executez le code ci-dessus.

Dans le champs le plus volumineux, si vous tapez toto titi tata, un message préformaté apparait, avec la mention suivante :

l'objet du mail est :

Toto titi tata
Cordialement


Maintenant, relancez le script en mettant cette fois ci des guillemets dans le corps, et voyez le résultat.

Ce que cherche, c'est poser une condition qui vérifie la présence de guillemet dans la variable $nCorps, et qui adapte le texte pour qu'aucune erreur ne se produise.
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..]Probleme de guillemets dans GuiCtrlRead()

#4

Message par pop45 »

Sa me fait rien a moi
Quan j'apuis sur executer sa lance windows live mail mais peut'etre pas vous
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..]Probleme de guillemets dans GuiCtrlRead()

#5

Message par sylvanie »

+1, je n'ai pas de problème.
On va se lancer dans les pistes de premiers niveau :
1) Quel est la version d'Autoit utilisée
2) un copier / coller du message d'erreur peux aider
3) peut être est ce lié au mailer lancé ?? (Foxmail pour ma part)
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
lerin57
Niveau 4
Niveau 4
Messages : 97
Enregistré le : mer. 30 sept. 2009 12:50
Status : Hors ligne

Re: [..] Problème de guillemets dans GuiCtrlRead()

#6

Message par lerin57 »

Bonjour à tous,

Le client de messagerie est outlook 2003.

Et pour reprendre l'exemple.

Si moi je tape toto "titi" tata dans le corps de ma Gui (ce qui devient le corps du mail)

Soit on ne verra que :
l'objet du mail est :
Toto


Soit une erreur "argument incorrect"

Ce probleme est d'une manière ou d'une autre lié aux guillemets, c'est pourquoi je cherche juste à contrôler la présence d'un caractère dans le corps du message, et de le modifier sous condition le cas échéant.

Si l'un d'entre à vous a une idée, je suis preneur.
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Problème de guillemets dans GuiCtrlRead()

#7

Message par pop45 »

peut pas t'aider j'ai pas de probleme
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] Problème de guillemets dans GuiCtrlRead()

#8

Message par Habibsbib »

Ben, essaye ça alors, ça gère les espaces dans ton mail et les guillemets :

Code : Tout sélectionner

_INetMail('"'&guictrlread($ndest)&'" "'&guictrlread($nobj)&'"', $body)
Ça devrait marcher.
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Problème de guillemets dans GuiCtrlRead()

#9

Message par pop45 »

sa va pas l'aider
1 tu a oublier une virgule
2 il voudrais mettre de guillemet a l'intérieur de son message pas au extrémité
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Problème de guillemets dans GuiCtrlRead()

#10

Message par timmalos »

Essayez de Rajouter un <html> au debut de votre Corps ($corps = '<html>' & $corps)
et </html> à la fin ($corps &= '</html>')

Puis Traitez votre corps de cette manière:
StringReplace($corps,'"','\"')
StringReplace($corps,'"','""')

Et essayez de voir comment se comporte votre Emaileur, car c'est de lui que vient le problème aparemment. Il faut surement l'aider un peu mais il faut trouver ce qu'il accepte, essayez les differentes combinaisons avec les StringReplace.
lerin57
Niveau 4
Niveau 4
Messages : 97
Enregistré le : mer. 30 sept. 2009 12:50
Status : Hors ligne

Re: [..] Problème de guillemets dans GuiCtrlRead()

#11

Message par lerin57 »

Bonsoir,

En réponse à timmalos, le probleme avec la fonction inetmail(), c'est qu'elle ne prend pas en charge un corps de message en HTML.

Le projet sur lequel je travaille (avec beaucoup de contribution du forum) me permettra d'utiliser un corps en html en utilisant une fonction issue de "macro" liée à outlook.

Toutefois je te remercie beaucoup car la commande stringreplace à entierement corrigé mon probleme.

Code : Tout sélectionner

$corps = guictrlread($nCorps)
$corps = stringreplace($corps, '"', "''", 0)
Merci pour votre aide à tous, je passe le sujet en résolu.
Répondre