Erreur aléatoire avec la fonction XMLDocument

Le
delirman49
Bonjour,

Dans le cadre d'une application développée en windev mobile,
j'interroge via GPRS mon serveur web (une simple page PHP) qui me
renvoi une liste "d'item" que je peux ensuite proposer via une liste
déroulante dans mon application.

Le problème que je rencontre est le suivant :
En exécutant le même code, de manière complètement aléatoire,
l'application plante mais toujours sur la même ligne (ou du moins,
toujours en appelant les fonctions XML. il me semble). Voici un
bout du code incriminé :

//****************************************************************
source est un buffer
sourceXML est une chaine

SI PAS HTTPRequête(url+"&v="+HeureSys()) ALORS

Erreur("Impossible de contacter le serveur")
Ferme()

SINON

source = HTTPDonneRésultat()
sourceXML = AnsiVersUnicode(source) //Source récupérée avec
succès

XMLDocument("xml",sourceXML) //Plantage aléatoire à cette ligne


XMLPremier("xml")
XMLFils("xml")
TANTQUE XMLTrouve("xml")

XMLSuivant("xml")
FIN

XMLTermine("xml")

FIN




Dans ce bout de code, le logiciel plante sur la ligne du XMLDocument.
Cependant, en traçant ma variable sourceXML, j'ai bien à chaque fois
la même liste bien formatée en XML que je récupère.
Le plus troublant c'est que le message d'erreur ne contient rien. Ca
ne me renvoi aucune erreur (pas d'erreur système et pas d'erreur
explicite dans ErreurInfo(errComplet)).

Est-ce que quelqu'un aurait déjà rencontré le problème ?

//**************************************************************
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal F
Le #14581601
a émis l'idée suivante :
Bonjour,

Dans le cadre d'une application développée en windev mobile,
j'interroge via GPRS mon serveur web (une simple page PHP) qui me
renvoi une liste "d'item" que je peux ensuite proposer via une liste
déroulante dans mon application.

Le problème que je rencontre est le suivant :
En exécutant le même code, de manière complètement aléatoire,
l'application plante mais toujours sur la même ligne (ou du moins,
toujours en appelant les fonctions XML.... il me semble). Voici un
bout du code incriminé :

//****************************************************************
source est un buffer
sourceXML est une chaine

SI PAS HTTPRequête(url+"&v="+HeureSys()) ALORS

Erreur("Impossible de contacter le serveur")
Ferme()

SINON

source = HTTPDonneRésultat()
sourceXML = AnsiVersUnicode(source) //Source récupérée avec
succès

XMLDocument("xml",sourceXML) //Plantage aléatoire à cette ligne


XMLPremier("xml")
XMLFils("xml")
TANTQUE XMLTrouve("xml")

XMLSuivant("xml")
FIN

XMLTermine("xml")

FIN




Dans ce bout de code, le logiciel plante sur la ligne du XMLDocument.
Cependant, en traçant ma variable sourceXML, j'ai bien à chaque fois
la même liste bien formatée en XML que je récupère.
Le plus troublant c'est que le message d'erreur ne contient rien. Ca
ne me renvoi aucune erreur (pas d'erreur système et pas d'erreur
explicite dans ErreurInfo(errComplet)).

Est-ce que quelqu'un aurait déjà rencontré le problème ?

//**************************************************************



J'ai eu ce genre de problème parceque le XMLTermine ne libérait pas correctement le XML. Faut que je regarde comment j'ai résolu
le problème.

--
Pascal

Ne garder que le prénom pour me joindre
Pascal F
Le #14581591
Voila comment j'ai résolu:
J'ai une procédure de chargement du XML
PROCEDURE Rempli_Tableau_Titre(pTitre)

DocXML est une chaîne = "XML"
InfoXML est une chaîne // Chaîne résultat
eIndice est un entier
ePositionXML est un entier
cZone est une chaîne
eInd est un entier
eCol est un entier


// Chargement du fichier XML dans une chaîne
InfoXML = pTitre
SI pTitre="" ALORS RENVOYER Vrai

// Initialisation des fonctions XML sur ce fichier
SI PAS XMLDocument(DocXML,InfoXML) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

/---- Traitement du XML
/ Terminaison du XML

SI PAS XMLTermine(DocXML) ALORS // Libère le document XML
Erreur(ErreurInfo())
FIN
DocXML=""
RENVOYER Vrai


CAS EXCEPTION:
ExceptionActive()
SI EnModeTest() ALORS
Erreur(ExceptionInfo(),ExceptionInfo(errLigne),ExceptionInfo(errTraitement))
FIN
XMLTermine(DocXML)
RENVOYER Faux

Ensuite lorsque je quitte la fenetre dans laquelle je traite le XML je refait un
XMLTermine(DocXML)

Depuis je n'ai plus de problème.

--
Pascal

Ne garder que le prénom pour me joindre
soundofthunder Hors ligne
Le #24474321
Le mercredi 24 Octobre 2007 à 19:28 par Pascal F :
Voila comment j'ai résolu:
J'ai une procédure de chargement du XML
PROCEDURE Rempli_Tableau_Titre(pTitre)

DocXML est une chaîne = "XML"
InfoXML est une chaîne // Chaîne résultat
eIndice est un entier
ePositionXML est un entier
cZone est une chaîne
eInd est un entier
eCol est un entier


// Chargement du fichier XML dans une chaîne
InfoXML = pTitre
SI pTitre="" ALORS RENVOYER Vrai

// Initialisation des fonctions XML sur ce fichier
SI PAS XMLDocument(DocXML,InfoXML) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

/---- Traitement du XML
/ Terminaison du XML

SI PAS XMLTermine(DocXML) ALORS // Libère le document XML
Erreur(ErreurInfo())
FIN
DocXML=""
RENVOYER Vrai


CAS EXCEPTION:
ExceptionActive()
SI EnModeTest() ALORS
Erreur(ExceptionInfo(),ExceptionInfo(errLigne),ExceptionInfo(errTraitement))
FIN
XMLTermine(DocXML)
RENVOYER Faux

Ensuite lorsque je quitte la fenetre dans laquelle je traite le XML je refait
un
XMLTermine(DocXML)

Depuis je n'ai plus de problème.

--
Pascal

Ne garder que le prénom pour me joindre


Bonsoir pascal,

J'expérimente ce problème et j'essaie d'implanter votre code.
J'ai juste une interrogation concernant votre phrase
Ensuite lorsque je quitte la fenetre dans laquelle je traite le XML je refait un
XMLTermine(DocXML)

: comment vous refaites un xmltermine alors alors que vous avez fait un seul xmldocument?

Merci pour votre réponse.

elie
Publicité
Poster une réponse
Anonyme