FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 0:29

» track_bar circulaire
par Klaus Hier à 21:41

» Gestionnaire de Projets Panoramic
par Jean Claude Hier à 20:41

» Mah-Jong européen new-look
par Jean Claude Hier à 20:34

» Gestion de l'Unicode
par jean_debord Hier à 11:21

» Button_picture
par pascal10000 Jeu 14 Déc 2017 - 11:41

» Pourquoi le compilateur stagne
par Minibug Jeu 14 Déc 2017 - 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Jeu 14 Déc 2017 - 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Jeu 14 Déc 2017 - 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Jeu 14 Déc 2017 - 10:00

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Violation d'accès.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
Pedro Alvarez

avatar

Nombre de messages : 882
Date d'inscription : 19/01/2014

MessageSujet: Violation d'accès.   Jeu 17 Mar 2016 - 12:19

Bonjour à tous.

L'un d'entre vous pourrait-il m'expliquer la raison pour laquelle Panoramic affiche régulièrement le message d'erreur suivant:

Violation d'accès à l'adresse .... dans le module Panoramic.exe, à l'adresse ....

Car il me semble difficile, voire même impossible, de corriger cette erreur dans mon code !

Merci d'avance.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5088
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Violation d'accès.   Jeu 17 Mar 2016 - 15:23

@Pedro,

Te donner une explication, j'en suis incapable.

Par contre, ce que je peux dire avec certitude c'est qu'une double virgule dans les déclarations de variables provoque systématiquement cette erreur.

Ex: DIM a$,,b$ là c'est certain ça plante. Comme dit Syverman, c'est souvent dû à un Copier/Coller/Merder Very Happy

Tu peux déjà pister ,, avec la fonction de recherche de l'éditeur que tu utilises...

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5865
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Violation d'accès.   Jeu 17 Mar 2016 - 15:42

oui ou des : glissés en fin de ligne par exemple et quelques trucs du genre
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Violation d'accès.   Jeu 17 Mar 2016 - 15:59

Ça serait bien de répertorier tous les cas, parce que c'est une erreur assez déroutante et enquiquinante, comme toutes celles où on n'a pas de numéro de ligne...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Violation d'accès.   Jeu 17 Mar 2016 - 16:19

Code:

' dim ,    : ' <==== une virgule seule : violation d'accès
dim a,     : ' <==== OK malgé la virgule qui n'a rien à faire ici !
' dim x,,y   : ' <====  deux virgules (ou plus) qui se suivent : violation d'accès
a = 10 :::   : ' <==== OK pour Plusieurs deux-points, mais un seul deux-points ERREUR


Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
silverman

avatar

Nombre de messages : 475
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Violation d'accès.   Jeu 17 Mar 2016 - 18:29

l''access violation' est un peu mystique, on y est tous confronté, mais il est difficile d'en trouver la cause. J'en ai eu plein avec la commande 'dll_call' car j'apprends à fabriquer des dlls et selon moi, il y a au moins 2 sortes de violation d'accès dû à:
1) une protection interne de panoramic, cad que dans ton source une commande a essayé d'écrire dans une zone mémoire protégé (ex.: poke 1,0, ou bien result%=dll_callx(...) avec des paramètres incorrect)
2) un plantage du module panoramic, la tu obtiens un message du style 'debug:panoramic.exe erreur d'application'(ex.:result%=dll_callx(...) pour accéder à des ressources internes, et là, panoramic n'a pas aimé)
Je n'ai aucune info là-dessus, ce n'est qu'un ressenti personnel, à force d'utiliser panoramic.
Le 2) est très rare et mon pano_debug est absolument inefficace dans ce cas, c'est la difficulté principale à laquelle je me heurte.
Pour corriger cette erreur, il y a la commande 'trace_on' qui aide bien, mais il faut savoir que dans le cas d'un 'access violation', il faut prendre l'avant dernier numéro de ligne dans le fichier de trace et ajouter 3(ou 4) pour obtenir le numéro de la ligne fautive.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Pedro Alvarez

avatar

Nombre de messages : 882
Date d'inscription : 19/01/2014

MessageSujet: Violation d'accès.   Jeu 17 Mar 2016 - 19:47

Bonjour.

Là, je commence vraiment à en avoir par-dessus la tête des Access Violation à répétition, qui s'affichent de manière aléatoire.
De plus, c'est une erreur impossible à corriger !

Si Jack n'intervient pas sur ce sujet, je laisse tomber définitivement Panoramic, et je passe à Purebasic, pour lequel je ne rencontre aucun problème de ce genre à ce jour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Violation d'accès.   Jeu 17 Mar 2016 - 20:50

Mon expérience avec la programmation m’a appris que dans au moins 90% des cas, l’erreur se trouve entre le clavier et la chaise !
Alors, n’abandonne pas, ne migre pas vers PureBasic.
Revois ton code et surtout les éventuels  appels aux DLLs.

J’appuie fortement ta demande d’intervention de Jack.
Hé Jack, coucou !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

Nombre de messages : 5088
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Violation d'accès.   Jeu 17 Mar 2016 - 22:16

JL35 a écrit:
Ça serait bien de répertorier tous les cas, parce que c'est une erreur assez déroutante et enquiquinante, comme toutes celles où on n'a pas de numéro de ligne...

Je suis du même avis que JL35,

En signalant une cause vérifiée, on aide le programmeur, et cela permet à Jack de prévoir certaines situations pour le débogage effectué par l'éditeur Panoramic (Comme l'histoire des 2 virgules dans une ligne DIM).

Ensuite je dois admettre que ce n'est pas toujours facile de savoir pourquoi ce message intervient, mais là je rejoins Papydall: "c'est entre la chaise et le clavier".

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Violation d'accès.   Jeu 17 Mar 2016 - 22:27

Bonsoir Jean Claude
Je parlais évidemment de répertorier tous les cas dont on a trouvé la cause, genre ':' en bout de ligne ou ',,' dans les DIM (les exemples de papydall), à force on finirait peut-être par en faire à peu près le tour, et ça éviterait de s'arracher les cheveux (ou ce qu'il en reste) pour les cas les plus courants.
Et je suis d'accord pour dire que c'est probablement toujours une erreur de programmation, dommage qu'elle soit signalée de manière aussi vague.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 18 Mar 2016 - 8:36

@ Silverman,

Il est où ton Pano_debug ?
Peut être me serait il utile ?...
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Minibug

avatar

Nombre de messages : 2414
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Violation d'accès.   Ven 18 Mar 2016 - 10:35

Citation :
Je parlais évidemment de répertorier tous les cas dont on a trouvé la cause

Je pense qu'il serait surtout plus judicieux de localiser l'erreur sur la ligne.
Ensuite il sera plus facile de la retrouver. Wink

Dans tous les cas, c'est vrai qu'il s'agit d'un manque de visibilité crucial dans Panoramic. pale
Ces histoires d'erreurs non localisées non prennent parfois beaucoup de temps !

Jack si tu nous entendant... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Violation d'accès.   Ven 18 Mar 2016 - 13:24

Dans mon idée, c'était bien de répertorier les cas trouvés par les programmeurs, empiriquement, faute d'autre moyen.
La localisation par numéro de ligne ce serait évidemment l'idéal, mais ça c'est du ressort de Jack. Peut-être...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Violation d'accès.   Ven 18 Mar 2016 - 15:28

Depuis quelque temps, je refais un débogueur pour Panoramic. Celui-ci est plutôt complexe, et j'évite de rentrer dans les détails.

Je me suis dit qu'il était possible de reprendre quelques lignes, pour résoudre ce problème de lignes. J'ai fait un contrôle rapide et apparemment il n'y a pas de problème.

Dans le programme à testé, il faut mettre au départ les lignes suivantes:
Code:
clipboard_string_copy "C:\PANO\chemin du programme\Nom du programme.bas"
chain "c:\PANO\temp\ligne_erreur.bas"  :  ' Y mettre le chemin et le nom du programme de contrôle
et le programme : "ligne_erreur.bas"
Code:
' à sauvegarder et reprendre le chemin avec le nom du programme pour son propre programme (cosmos70)
 dim f_source$ ,f_trace$, dim_prg$(100)
 dim a%,a$

 f_source$ = clipboard_string_paste$ :'   :' fichier, non dir !!
 f_trace$ = file_extract_path$(f_source$)
 dir_change f_trace$
 dlist 1 :  file_load 1,f_source$
 dlist 2
 if count(1) > 0
    for a%=1 to count(1)
       a$=item_read$(1,a%)
       if trim$(a$)=""
          item_add 2,""
       else
          item_add 2,"caption 0,"+str$(a%)+":"+a$
       end_if
    next a%
 end_if
 file_save 2,"copie_prg_avec_ligne.bas"
 chain "copie_prg_avec_ligne.bas"

Je pense que vous avez compris comment cela fonctionne. Vous chainez avec ce programme, donc il faut y mettre le nom de celui-ci dans le programme à contrôler.
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Violation d'accès.   Ven 18 Mar 2016 - 19:30

Je ne suis pas sure que vous en ayez compris le principe. Aujourd'hui je coule du béton, et j'ai fait ce programme pendant mon déjeuner, et je n'avais pas le temps.

Le programme plus haut ajoute un numéro de ligne dans le code source, avant toute instruction. Si un problème intervient, il suffit de regarder dans la barre de la fenêtre le numéro de ligne, et c'est cette ligne qui a ce problème.

Donc en ajoutant les deux lignes dans un programme: clipboard_string_copy chemin du programme en teste, et chain nom du programme contrôle, cela a pour effet de faire un second source du programme qui a les numéro de ligne devant chaque ligne. Ensuite le programme qui a récupéré l'adresse de votre programme, lance ce dernier.

A adapter pour le chemin, et peut-être pour le caption, le n° de ligne peut-être à un autre endroit.

Bon, je retourne au boulot!
Revenir en haut Aller en bas
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Violation d'accès.   Ven 18 Mar 2016 - 20:21

Là je comprends mieux, et en effet c'est astucieux, au moment de l'arrêt il n'y a plus qu'à lire le numéro de ligne fautif dans le caption 0.
Intéressant, et à noter, pour les erreurs sans numéro de ligne !

Tu peux retourner à ton béton la tête haute !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jack
Admin
avatar

Nombre de messages : 1773
Date d'inscription : 28/05/2007

MessageSujet: Re: Violation d'accès.   Ven 18 Mar 2016 - 20:44

Je pense qu'il est possible de capturer un événement (en fait une "exception") qui se déclenche lors d'un "Access Violation" ou lors d'une autre erreur intempestive.
A partir de là, afficher le numéro de la ligne qui a déclenché l'erreur sera très simple.

Laissez-moi quelques jours de réflexion. Je vous tiendrai au courant.

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Minibug

avatar

Nombre de messages : 2414
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Violation d'accès.   Ven 18 Mar 2016 - 21:18

Bonsoir Jack !

Merci de bien vouloir te pencher sur ce problème. Wink

Il est vrai que certains messages d'erreurs sont très évasifs et difficiles a localiser dans des grands programmes. C'est vrai que l'identification d'une ligne reste le meilleur moyen de résoudre un bug.

Encore merci pour ta réactivité.

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Violation d'accès.   Ven 18 Mar 2016 - 22:32

+1, ce serait parfait intégré dans Panoramic ! Merci Jack de t'y intéresser.


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Violation d'accès.   Sam 19 Mar 2016 - 18:14

En attendant l'implémentation par Jack du système de localisation des erreurs ci-dessus, j'ai repris la méthode de cosmos70, qui consiste à afficher en permanence dans le caption 0 le numéro de la ligne en cours d'exécution, pour savoir où on en est au moment de l'erreur:
Code:
LABEL Chp,Info
DIM r$,fr$,i%,a$,c$,q$,panedi$,panexe$
r$ = "C:\PANORAMIC": ' Répertoire des sources Panoramic
panedi$ = "C:\PROGRA~2\PANORA~1\PANORA~1.EXE": ' Panoramic_Editor
panexe$ = "C:\PROGRA~2\PANORA~1\PANORA~2.EXE": ' Panoramic.exe
fr$ = r$+"Debug_tmp.bas": ' Fichieer source de manoeuvre (créé)
q$ = CHR$(34)
WIDTH 0,230: HEIGHT 0,SCREEN_Y-40
BORDER_SMALL 0: CAPTION 0, "-   DEBUG   -"
ALPHA 8: TOP 8,2: FONT_SIZE 8,10: FONT_BOLD 8: CAPTION 8,"Clic le progr. à debugger "
  COLOR 8,255,255,128
BUTTON 9: WIDTH 9,30: LEFT 9,WIDTH(0)-50: HEIGHT 9,22: CAPTION 9,"?"
  FONT_BOLD 9: FONT_SIZE 9,10: ON_CLICK 9,Info
CONTAINER_OPTION 10: TOP 10,21: WIDTH 10,WIDTH(0)-20: HEIGHT 10,30
  CAPTION 10,"Exécuter dans:": COLOR 10,200,255,255
OPTION 11: PARENT 11,10: TOP 11,13: LEFT 11,3: CAPTION 11,"Panoramic_Editor"
OPTION 12: PARENT 12,10: TOP 12,TOP(11): LEFT 12,115: CAPTION 12,"Panoramic.exe"
  MARK_ON 11
LIST 1: TOP 1,50: WIDTH 1,210: HEIGHT 1,HEIGHT(0)-90: FONT_NAME 1,"Consolas"
  ON_CLICK 1,Chp
MEMO 2: HIDE 2
DLIST 4
DLIST 5
EXECUTE_WAIT "Cmd.exe /c DIR /B "+r$+"*.bas | clip"
CLIPBOARD_PASTE 2
FOR i% = 1 TO COUNT(2): ITEM_ADD 1,ITEM_READ$(2,i%): NEXT i%
END

Chp:
FILE_LOAD 4,r$+ITEM_INDEX$(1)
FOR i% = 1 TO COUNT(4)
    ITEM_ADD 5,"  Caption 0,"+q$+"Ligne: "+STR$(i%)+" *** debug ***"+q$
    ITEM_ADD 5,ITEM_READ$(4,i%)
NEXT i%
FILE_SAVE 5,fr$
IF CHECKED(11) = 1
    EXECUTE panedi$+" "+fr$: ' exécution dans Panoramic_Editor
ELSE
    EXECUTE panexe$+" "+fr$: ' exécution dans Panoramic.exe
END_IF
TERMINATE

Info:
c$ = CHR$(10)
a$="Débogage d'un programme dont l'origine de l'erreur n'est pas localisée."+c$
a$=a$+"  (méthode cosmos70)"+c$+c$
a$=a$+"Ce module intercale entre toutes les lignes du programme à tester une ligne"+c$
a$=a$+q$+"CAPTION 0 "+q$+" + n° de la ligne courante, et crée un nouveau fichier: Debug_tmp.bas"+c$
a$=a$+"(dont le nombre de lignes est donc le double de celui de l'original)"+c$+c$

a$=a$+"C'est ce nouveau fichier/programme qui sera exécuté, soit dans Panoramic_Editor,"+c$
a$=a$+"soit dans Panoramic.exe (choisi préalablement)."+c$+c$
a$=a$+"Usage:"+c$
a$=a$+"1) Choisir d'abord le programme d'exécution (Panoramic_Editor ou Panoramic.exe)"+c$
a$=a$+"2) Cliquer dans la liste des programmes le source (.bas) à tester."+c$+c$
a$=a$+"Quand le programme part en erreur, le numéro de la ligne où il s'est arrêté est"+c$
a$=a$+"affiché dans le caption du Form 0."
MESSAGE a$
RETURN
Il faut renseigner les 3 variables en tête:
r$: chemin des sources Panoramic
panedi$: chemin de Panoramic_Editor.exe
panexe$: chemin de Panoramic.exe
Voir l'aide succincte (bouton '?')
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Violation d'accès.   Sam 19 Mar 2016 - 20:19

Merci JL35 pour le partage.
C'est bien pratique et ça peut rendre service.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Violation d'accès.   Sam 19 Mar 2016 - 20:30

Pas de quoi papydall, et je répète que l'idée (intéressante il me semble) est de cosmos70.
C'est à expérimenter (pour le moment je ne peux pas, je ne fais pas d'erreur Very Happy ).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Violation d'accès.   Sam 19 Mar 2016 - 20:46

JL35 a écrit:
Pas de quoi papydall, et je répète que l'idée (intéressante il me semble) est de cosmos70.
C'est à expérimenter (pour le moment je ne peux pas, je ne fais pas d'erreur   ).

… Tu ne fais d’erreur ! Moi aussi, vaniteux ! tongue

Bon j’ai testé avec un petit code volontairement buggé et il m’a indiqué la ligne incriminée.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Invité
Invité



MessageSujet: Re: Violation d'accès.   Sam 19 Mar 2016 - 21:23

Bonsoir,
Le problème avec Chain, ou panoramic.exe, est que si il y a des #include, ça ne marche pas.
Dans mon programme (celui que je fais, et non celui que j'ai publié ici), le problème est pris en compte. Lorsque je lis une ligne qui possède #include, je lis cette partie dans un autre list, pour le réinsérer dans le list principal. Celà recompose le programme.

Mais lors des teste que j'ai fait dans mon programme principal avec chain, j'ai constaté que j'avais des erreurs avec des nouvelles commandes, comme show_all je crois. Alors je ne sais pas si j'ai la dernière version de Panoramic.exe, ou si celle-ci a été mis à jour par Jack. Sur son site, panoramic.exe dans de 2013! Peut-être que c'est normal.

Plus le temps, je quitte pale
Revenir en haut Aller en bas
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Violation d'accès.   Sam 19 Mar 2016 - 21:52

L'avantage dans ce que j'ai mis c'est qu'on n'a pas à bricoler le programme à tester pour ajouter des chain ou autres.
Le bricolage, c'est l'utilitaire qui le fait de manière transparente pour créer un fichier temporaire (celui qui sera exécuté), et c'est sans conséquence sur le source d'origine qui reste inchangé.
La seule contrainte c'est qu'il faut que le source à tester soit déjà enregistré en .bas.

Maintenant, c'est à voir si ça couvre tous les cas... sans doute pas (je pense aux erreurs dues à des timers par exemple), mais c'est à expérimenter.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Violation d'accès.   

Revenir en haut Aller en bas
 
Violation d'accès.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: