• Advertisement

Résolu : La mémoire ne peut être read

Tout ce qui concerne la version 11 & plus récentes de windev

**Windev est une marque déposée de Pcsoft**

Résolu : La mémoire ne peut être read

Messagepar niou142 » Mar Juil 27, 2010 1:05 pm

Bonjour,

J'ai bientôt terminé une appli. j'ai donc créé l'excutable.

Elle marche plutôt pas mal . Au moment ou je ferme mon appli, j'ai ce message qui apparait (PS je suis sous WD12) :
L'instruction à "0x773a0df4" emploie l'adresse mémoire "0x773a0df4". La mémoire ne peut pas être "read"
Cliquer OK pour terminer le programme.

Comment faire svp ?
Dernière édition par niou142 le Mer Juil 28, 2010 2:09 pm, édité 1 fois.
niou142
Membre Confirmé
 
Messages: 252
Inscription: Lun Oct 06, 2008 2:51 pm

Advertisement

Re: La mémoire ne peut être read

Messagepar TheDuke » Mar Juil 27, 2010 3:14 pm

Salut Niou

As tu essayé de tout fermer et redemarrer ton poste?

Cela m'est arrivé il y a 2 jours et en redémarrant ok!

A vérifier au cas ou?
TheDuke
SUPER MEMBRE
 
Messages: 1268
Inscription: Mer Nov 22, 2006 8:24 pm

Re: La mémoire ne peut être read

Messagepar niou142 » Mar Juil 27, 2010 3:17 pm

Je n'ai pas encore testé cela.

Par contre, j'ai effectué un autre test. j'ai pris une fenêtre qui plante.

Si je supprime la combo de ma fenêtre (source pour le remplissage : Fichier chargé en mémoire), que je recréé mon exécutable, alors je n'ai plus le bug.

Comment faire pour résoudre ce pb ? Faut-il vider la mémoire ? Si oui comment ?
niou142
Membre Confirmé
 
Messages: 252
Inscription: Lun Oct 06, 2008 2:51 pm

Re: La mémoire ne peut être read

Messagepar emidev » Mar Juil 27, 2010 3:19 pm

Bonjour,

cela vient aussi des objets (activeX, classes, automation surtout et autre ) qui pourraient etre declarés en dynamique ou allouer dynamiquement et qui ne sont pas liberés

par exemple si on utilise ADO le fait de declarer un objet qui est allouer par une dll externe et que la dll reste ouverte (dechargedll si on a fait un chargedll quelque part)

donc vous avez quelques part dans votre code un objet qui ne s'est pas fermé et lors de la fermeture du prog windev l'objet est en memoire mais plus aucun pointeur ne pointe dessus ce qui provoque une erreur.

il faudrait voir dans la pile ou cela se stitue pour identifié l'objet en cause.
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: La mémoire ne peut être read

Messagepar niou142 » Mar Juil 27, 2010 3:29 pm

Bonjour Emidev,

Comment faire pour voir dans la pile ?

Je n'utilise rien de spécial. En faite, j'ai mis en CS et j'utilise un driver ODBC.

Lors de la fermeture, je fais bien :
Code: Tout sélectionner
// Déconnexion de la connexion ODBC Sage
SQLDéconnecte()

// Déconnexion du serveur MANTA:
HFermeConnexion("HyperFileCS")
niou142
Membre Confirmé
 
Messages: 252
Inscription: Lun Oct 06, 2008 2:51 pm

Re: La mémoire ne peut être read

Messagepar emidev » Mar Juil 27, 2010 3:33 pm

bonjour,

as tu essaye de ne rien mettre dans fermeture du projet
ou de les mettre en commentaire une apres l'autre pour voir

generalement le code en fermeture du projet pose des problemes car on ne sait pas quand windev le fait il peut tres bien faire ces 2 lignes avant autre chose et donc cela planterait car tu as tout fermé.
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: La mémoire ne peut être read

Messagepar niou142 » Mar Juil 27, 2010 3:40 pm

Je viens de faire les tests en mettant en commentaire et c'est pareil ...

Ce que je trouve c'est que lorsque je supprime ma combo (COMBO_T_Type_Pieces), sa fonctionne correctement.

Voici le code d'initialisation d'une de mes fenêtre qui plante (faite avec le RAD) :

Code: Tout sélectionner
// Ouverture de la fenêtre de type Fiche simple
// Entrée:   sModeOuverture=mode d'ouverture de la fenêtre :
//            - "Modif"      Modification de l'enregistrement en cours
//            - "Création"   Création d'un nouvel enregistrement
PROCEDURE FicheSimpleRAD(sModeOuverture="Création")

// Par défaut, la fenêtre n'est pas modifiée
MaFenêtre..ValeurRenvoyée = Faux

GP_CHAMP..Etat = Inactif

// Gestion du mode d'appel
SELON sModeOuverture
   CAS ~="Création"
      // On réinitialise les champs
      RAZ()
      
      // On réinitialise les variables Hyper Files
      HRAZ(T_Type_Pieces)
            
   CAS ~="Modif"   
      SI HNbEnr(T_Type_Pieces)=0 OU HEnDehors(T_Type_Pieces) ALORS         
      // ouvre une boite de dialogue pour informer l'utilisateur
         Info("Le fichier ne contient aucun enregistrement.")
         // ferme la fenêtre
         Ferme
      FIN
      
      // On remplit les champs
      FichierVersEcran()
FIN

SI T_Type_Pieces..RubriqueFiltrée<>"" ALORS
   {T_Type_Pieces..RubriqueFiltrée,indChamp}..Valeur = T_Type_Pieces..BorneMin
FIN



Tu y vois un truc de spécial ?
niou142
Membre Confirmé
 
Messages: 252
Inscription: Lun Oct 06, 2008 2:51 pm

Re: La mémoire ne peut être read

Messagepar niou142 » Mar Juil 27, 2010 3:46 pm

Si je mets à ma combo : source pour le remplissage : mémoire (au lieu de fichier chargé en mémoire) sa fonctionne ....

Comment faire pour m'éviter de modifier toutes mes combos (car j'ai peur que mon code ne marche plus correctement après sa) ?
niou142
Membre Confirmé
 
Messages: 252
Inscription: Lun Oct 06, 2008 2:51 pm

Re: La mémoire ne peut être read

Messagepar emidev » Mar Juil 27, 2010 3:52 pm

Bonjour,

et si tu met cette ligne en commentaire (pour test)
Code: Tout sélectionner
    SI T_Type_Pieces..RubriqueFiltrée<>"" ALORS 
             {T_Type_Pieces..RubriqueFiltrée,indChamp}..Valeur = T_Type_Pieces..BorneMin
    fin

pour savoir si c'est vraiement la combo qui pose probleme
(je pense que oui mais il faut essayer pour voir

apres je ferais cela

Code: Tout sélectionner
    SI T_Type_Pieces..RubriqueFiltrée<>"" et champExiste(T_Type_Pieces..RubriqueFiltrée) ALORS 
             {T_Type_Pieces..RubriqueFiltrée,indChamp}..Valeur = T_Type_Pieces..BorneMin
    fin


pour etre sur que le champ existe bien
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: La mémoire ne peut être read

Messagepar niou142 » Mer Juil 28, 2010 8:33 am

Bonjour emidev,

j'ai fais le test de ton code et j'ai toujours la même erreur.

j'ai même essayé de mettre tout mon code en commentaire.

A savoir, j'ai fais le test de mettre tout mon code d'init de la fenêtre en commentaire et sa n'a rien changé ...

une autre idée (car je ne me vois pas modifier tout mon code et toutes mes combos ...) ?

Pour info: quand je créé l'exé et que je l'installe sur mon PC (ou j'ai WD12) sa marche bien, mais quand je suis sur un autre PC sa plante ...
niou142
Membre Confirmé
 
Messages: 252
Inscription: Lun Oct 06, 2008 2:51 pm

Re: La mémoire ne peut être read

Messagepar Vince » Mer Juil 28, 2010 1:21 pm

Bonjour,

J'ai déjà eu le même problème avec un activeX. Comme j'étais dans l'impossibilité de libérer les ressources allouées par l'activeX, je fermais brutalement l'application en ajoutant ca dans le code de fermeture de la fenêtre:

Code: Tout sélectionner
API ("KERNEL32","TerminateProcess",API("KERNEL32","GetCurrentProcess"))


J'avoues que ce n'ait pas très propre, mais quand on n'a pas le choix ...

A+
Vince
http://vroy1.free.fr/wpfr/
http://www.ennovsys.fr
Vincent

Site d'emplois WD: http://www.jobagl.fr
Vince
Membre
 
Messages: 61
Inscription: Dim Jan 20, 2008 1:06 pm

Re: La mémoire ne peut être read

Messagepar niou142 » Mer Juil 28, 2010 1:57 pm

Bonjour Vince,

J'ai fais le test sur le PC de mon client. Le seul plantage que j'ai eu c'est quand je suis sur une fenêtre qui ouvre un PDF :
Voici le code en question :

ResOuverture est un entier

// Ouverture d'un fichier externe
ResOuverture = LanceAppliAssociée(gsChemin_pdf+"\Tarifs.pdf")
SI ResOuverture <> 1 ALORS
Info("Il y a eu un problème pour ouvrir les tarifs : Tarifs.pdf")
FIN


Aux autres endroits sa ne plante pas (mais bon je n'ai testé que sur un seul PC...).

Pour ton code, il faut que je change quelque chose ? Car je ne l'ai jamais utilisé
Code: Tout sélectionner
PI ("KERNEL32","TerminateProcess",API("KERNEL32","GetCurrentProcess"))
niou142
Membre Confirmé
 
Messages: 252
Inscription: Lun Oct 06, 2008 2:51 pm

Re: La mémoire ne peut être read

Messagepar Vince » Mer Juil 28, 2010 2:03 pm

J'ai dis plus haut qu'il fallait mettre ce code dans la fermeture de la fenêtre. Je voulais bien entendu dire dans le code de fermeture du projet.
Et oui, tu copies/colles ce code directement.
Code: Tout sélectionner
API ("KERNEL32","TerminateProcess",API("KERNEL32","GetCurrentProcess"))


A+
Vince
http://vroy1.free.fr/wpfr
http://www.ennovsys.fr
Vincent

Site d'emplois WD: http://www.jobagl.fr
Vince
Membre
 
Messages: 61
Inscription: Dim Jan 20, 2008 1:06 pm

Re: La mémoire ne peut être read

Messagepar niou142 » Mer Juil 28, 2010 2:09 pm

J'ai copié ton code (en faite dans mon cas c'est bien dans la fermeture de la fenêtre principale pour m'éviter de retourner à ma fenêtre d'authentification).

Et bien à priori sa à l'air de ne plus buguer ! Merci beaucoup pour ton aide (ainsi qu'à tous ceux qui se sont penchés sur mon problème).

Sa m'a bien aidé car c'était assez frustrant alors que j'avais enfin fini mon appli.

Merci !
niou142
Membre Confirmé
 
Messages: 252
Inscription: Lun Oct 06, 2008 2:51 pm

Re: Résolu : La mémoire ne peut être read

Messagepar Vince » Mer Juil 28, 2010 2:36 pm

Si cela a pu résoudre ton problème, c'est parfait ;)
A+
Vince
http://vroy1.free.fr/wpfr/
http://www.ennovsys.fr
Vincent

Site d'emplois WD: http://www.jobagl.fr
Vince
Membre
 
Messages: 61
Inscription: Dim Jan 20, 2008 1:06 pm



  • Advertisement

Retourner vers Forum windev 11 & plus récentes

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités