Présentation

Acceuil

Catégories

Recherche

Derniers Commentaires

Syndication

  • Flux RSS des articles
Vendredi 20 mai 2011 5 20 /05 /Mai /2011 15:50

Par softdev

wd16

En effet, pour les sites comme FREEDEV qui ne bénéficie pas d`un contrat professionnel auprès de leur FAI, l`envoi de XXX emails est souvent considéré comme du SPAM.

Pour contourner cette limitation, la technique consiste donc a ce déconnecter du compte SMTP tous les XXX emails envoyés puis a ce reconnecter.

Voici un exemple de code :

//Ouverture de la session SMTP
//On fixe le délai de timeout, on le fixe à 20 secondes
EmailChangeTimeOut(20)

//Init des paramètres de l`email
Email.NbDestinataire         = 1
Email.Expéditeur                 = "webmaster@freedev.eu"
Email.AdresseExpéditeur         = "webmaster@freedev.eu"
Email.Sujet                         = "FreeDev : test envoi email"
Email.essage                 = "FreeDev : test envoi email"

//Ouverture sessions SMTP
SI PAS EmailOuvreSessionSMTP("SessionSMTP", "smtp.free.fr") ALORS
        Erreur("Erreur : Impossibled`établir la connexion" + RC + EmailMsgErreur(Email.Erreur))
        RETOUR
FIN

//***** ENVOI MAILING A 100 CONTACTS *****//        

i est un entier = 1
POUR i = 1 A
100
        
        //Je me déconnecte et reconnecte tous les 10 messages.
        SI modulo(i, 10)=0 ALORS        
                
                EmailFermeSession("SessionSMTP")
                Multitâche(100)
                SI PAS
EmailOuvreSessionSMTP("SessionSMTP","smtp.free.fr") ALORS
                        Erreur("Erreur : Impossible d`établir la connexion" + RC + EmailMsgErreur(Email.Erreur))        
                        RETOUR
                FIN                
        FIN
        
        //On affecte le destinataire avec l`adresse contenue dans le tableau
        Email.Destinataire[1] = TabAdresseEmail[i]
        
        // Envoie du eMail
        SI PAS EmailEnvoieMessage("SessionSMTP") ALORS
                ErreurInfo(errMessage))                
        FIN        
        Jauge(i,nbAdressesEmail)                                
FIN

 

Source: Freedev

Publié dans : Email - Communauté : Windev - Voir les 0 commentaires - Ecrire un commentaire
Jeudi 19 mai 2011 4 19 /05 /Mai /2011 16:24

Par softdev

wd16

Les versions 15 permettent de simplifier considérablement les traitements basés sur les données d'un document XML.

Voici en détail la méthode à appliquer pour être immédiatement opérationnel avec ces nouvelles techniques.

1. Déclaration d'une variable du type "XMLDocument" :

Dans l'Explorateur de projet, utilisez le menu contextuel de "Descriptions XML" afin de spécifier l'emplacement du document XML.


Cette première action n'a pas pour but d'indiquer le document à utiliser lors de l'exécution. Il s'agit uniquement d'indiquer au WLangage la structure du document, notamment pour bénéficier de la complétion dans l'éditeur de code.

Pour cet exemple, on importe un document XML contenant les Clients de l'exemple CRM livré avec WINDEV. Le fichier XML peut être obtenu avec l'appel suivant dans un code de l'exemple CRM : 
HExporteXML(CLIENT,"C:\temp\Client.XML")


Une fois la structure du document XML connue de l'éditeur, il suffit dans vos traitements de déclarer une variable de type XMLDocument par un simple glisser/déplacer :
- sélectionnez la description XML 
- effectuez un glisser/déplacer de son nom, dans le code qui doit parcourir les donnés du document XML.

La déclaration suivante est obtenue :
MonDocXML est un xmlDocument,Description="Client"

Notez que le glisser/déplacer est facultatif, la déclaration peut être saisie traditionnellement dans l'éditeur.

 
2. Ouverture :
La variable permettant d'accéder aux données du document XML est maintenant déclarée, il suffit de localiser le document à utiliser lors de l'exécution à l'aide de la fonction "XMLOuvre" :
MonDocXML est un xmlDocument,Description="Client"
MonDocXML = XMLOuvre("c:\temp\Client.XML",depuisFichier)

Pour l'exemple l'emplacement du fichier XML est spécifié de façon statique. Il pourrait s'agir d'un fichier sélectionné par l'utilisateur (cf. fonction "fSélecteur"), récupéré depuis un email, un serveur FTP ...

Il ne doit pas s'agir obligatoirement d'un fichier XML, il est tout à fait possible de préciser une chaîne de caractères contenant le source XML, par exemple après l'avoir récupéré d'un Web service. La syntaxe dans ce cas est de la forme :
MonDocXML = XMLOuvre(VariableContenantLeXML,depuisChaîne)

3. Parcours :
Les données XML sont maintenant accessibles, la programmation du parcours devient extrêmement simple et rapide grâce à l'instruction POUR TOUT. En effet en lui précisant simplement le nœud du document à parcourir, elle se charge de tous les accès aux données. Chaque itération permet d'accéder aux données du document XML afin de les traiter.

Notez que la déclaration de la variable UnNoeudClient est facultative au niveau de l'exécution de l'application. Elle est cependant recommandée, afin bénéficier dans l'éditeur de code de la complétion sur les éléments de chaque nœud du document.

Pour plus de détails sur le type XMLDocument, consultez l'aide en ligne.
Source: le blog du ST
Publié dans : Xml - Communauté : Windev - Voir les 0 commentaires - Ecrire un commentaire
Jeudi 19 mai 2011 4 19 /05 /Mai /2011 16:22

Par softdev

wd16

La version 15 permet d'afficher des données d'un fichier XML dans un champ avec peu de lignes de code, grâce au type XMLDocument et le databinding.

 

Après avoir importé le fichier de description XML dans l'explorateur du projet (voir ici) , il faut déclarer une variable globale dans le traitement "Déclaration des globales de la fenêtre". Par exemple : 

 

gListeclient est un xmlDocument, Description="client.xml"
gListeclient = XMLOuvre("c:\temp\client.xml",depuisFichier)

 

Ensuite dans l'onglet Contenu de la description du champ qui doit afficher les données du document XML (une combo par exemple), sélectionnez la source à charger automatiquement dans le champ :

Pour l'élément "Valeur affichée", sélectionnez la propriété "Texte" du nœud NomClient :

 

 

Et pour finir, dans "Valeur mémorisée", sélectionnez la propriété "Texte" du nœud NumClient :

 

La récupération de la valeur mémorisée dans vos traitements se fera avec la propriété ..ValeurMémorisée. Par exemple : 

Info("Numéro client sélectionné : "+MaCombo..ValeurMémorisée)

Source: le blog du ST

Publié dans : Xml - Communauté : Windev - Voir les 0 commentaires - Ecrire un commentaire
Jeudi 19 mai 2011 4 19 /05 /Mai /2011 16:17

Par softdev

wd16

Lors de la connexion d'une clé de protection pour WINDEV, WEBDEV ou WINDEV Mobile, Windows se charge automatiquement d'installer le pilote nécessaire à la reconnaissance du dispositif de protection.

Pour cela Windows XP, Vista et Seven utilisent les pilotes pré-installés sur le poste, et si besoin Windows update.

Lors de la connexion de la clé, les messages suivants sont donc affichés par le système :

Si une configuration ne parvient pas à activer le périphérique (Windows Update désactivé, restriction de sécurité...), le message suivant apparaît :

Dans ce cas l'installation du pilote doit être faite à l'aide d'un programme fourni par le fabricant. Cette opération est très simple, à faire une fois pour toute et s'applique à tous les produits qui utilisent une clé de protection électronique. Toutes les opérations à effectuer sont décrites dans la FAQ 3519 de notre site. Voici en image le déroulement de cette installation :
Téléchargement de la procédure d'installation :

Extration de la procédure d'installation contenue dans l'archive téléchargée :

Lancement de la procédure d'installation du pilote :

Exécution de l'assistant d'installation du pilote :






Terminaison de l'assistant, les clés peuvent maintenant être connectées et seront automatiquement reconnues par Windows.

Source: le blog du ST

Publié dans : Divers - Communauté : Windev - Voir les 0 commentaires - Ecrire un commentaire
Jeudi 19 mai 2011 4 19 /05 /Mai /2011 16:15

Par softdev

wd16

Une station de travail sous Windows a généralement entre 50 et 100 processus qui cohabitent et partagent les ressources (processeurs, RAM, disques...). La sécurité accrue des versions actuelles de Windows permet dans le cas général une cohabitation efficace de tous les processus et services lancés. En effet notamment grâce au multitâche préemptif, à la signature des pilotes, au contrôle des installations involontaires par l'UAC (...), le système assure la bonne marche des applications.

Cependant aucune application n'est à l'abri d'une machine "récalcitrante". Un traitement va s'exécuter sur des centaines de stations, mais sur une station il sera bloqué par un message d'arrêt de Windows "Ce programme va être arrêté...". Plus complexe encore, l'application va fonctionner un temps, puis sans aucun changement apparent va s'interrompre aléatoirement, ou définitivement, avec l'affichage d'une erreur.

Tant qu'il s'agit d'un déclenchement du mécanisme de sécurité du WLangage, il reste possible de rechercher une solution à l'aide du dump de débogage, et d'avoir un scénario de reproduction. Mais lorsqu'il s'agit d'un arrêt par Windows  "Ce programme va être arrêté...", "L'application a cessé de fonctionner ... " (il s'agit de GPF - General Protection Fault), les possibilités de recherche s'amenuisent. De plus dans pareil cas :
  • il est le plus souvent impossible de parvenir à reproduire le cas sur le poste de développement, malgré la récupération des données de production, et l'application scrupuleuse des actions de l'utilisateur.
  • les investigations de base en cas de défaut de configuration ne donnent aucun résultat :
    • réinstallation de l'application,
    • vérification de l'installation de tous les correctifs Windows update,
    • mise à jour des pilotes de périphériques à partir de ceux fournis par les fabricants,
    • vérification disque, réseau, RAM,
    • retour arrière sur la configuration avec un point de restauration ...

Bien que le Support Technique Gratuit ne puisse pas à distance et sans reproduction découvrir la cause d'une défaillance ponctuelle, il y a cependant une solution pour obtenir au moins une orientation recherches.

En effet Windows peut donner en  cas d'arrêt des informations de débogage. Il faut pour cela avoir recours à l'utilitaire "windbg". Voici le processus à appliquer :
  • installer les outils de debug de Windows en 32 bits ou en 64 bits suivant le mode de compilation de l'application (une mise à jour du Framework .NET peut être nécessaire),
  • lancer le programme dont l'exécution est interrompue anormalement, en le plaçant dans une situation précédent le blocage (ne pas reproduire le blocage à ce stade),
  • lancer l'utilitaire Windbg.exe par le menu "Démarrer" de Windows (c:\Program Files\Debugging Tools for Windows (x86)\windbg.exe ou suivant le cas c:\Program Files\Debugging Tools for Windows (x64)\windbg.exe),
  • dans l'utilitaire, faire F6 et sélectionner l'application précédemment lancée, valider :
  • l'outil de débogage de Microsoft est alors "attaché" au processus,
  • saisir dans le champ en bas de l'utilitaire "sxe av" puis valider,
  • pour vérification, saisir ensuite "sx" puis valider. La ligne "av access violation - break - not handled" sera alors visible :
  • - faire F5, qui va afficher la ligne d'information "*BUSY* Debuggee is running..."
  • provoquer le blocage dans l'application, 
  • l'utilitaire affiche une information de la forme "Access violation - code C00000005",
  • saisir dans le champ en bas la commande de sauvegarde : ".dump /ma <NomFichierDump>.dmp"
  • l'utilitaire va créer le fichier spécifié et afficher en retour "Creating c:\temp\dump_mon_projet - mini user dump / Dump successfully written".
Le DUMP obtenu est utilisable par notre équipe Développement. Il permet de voir les modules du Framework en cours d'exécution, les appels au système qui n'ont pas pu aboutir. Cela permet donc dans la majeure partie des cas d'orienter les recherches. 

Pour faire expertiser ce DUMP, il suffit de le déposer sur un serveur (Web, FTP, partage), et d'utiliser l'assistant accessible par le menu "? ... Requête au Support Technique" de WINDEV. Il faut préciser au travers de l'assistant toutes les informations relatives à la configuration à partir de laquelle le DUMP a été créé, et l'emplacement du DUMP pour son téléchargement.
Source: le blog du ST
Publié dans : Divers - Communauté : Windev - Voir les 0 commentaires - Ecrire un commentaire
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés