IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Erreur : Access violation


Sujet :

Delphi

  1. #21
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Dr.Who Voir le message
    Je ne vois pas l'interet d'avoir TInfo en type TObject alors qu'un record suffirait.
    Re-question : est-ce qu'il est simple de passer les Tobjet en record ?

  2. #22
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Est-ce quand appelant plusieurs fois le Tinfo.create je peux avoir des soucis d'AV ?

  3. #23
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 710
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 710
    Points : 13 174
    Points
    13 174
    Par défaut
    Citation Envoyé par lapinoob Voir le message
    Est-ce qu'il faut que je vide le stsRef avant de faire un free ? (petite betise de ma part je vide deja les TStringList avec un .clear)
    Clear ne fait que vider la liste, mais ne détruit pas les objets liés. Il faut les détruire manuellement (certainement les instances non libérées listées par FastMM).

    Citation Envoyé par lapinoob Voir le message
    Est-ce quand appelant plusieurs fois le Tinfo.create je peux avoir des soucis d'AV ?
    Non.

  4. #24
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Citation Envoyé par lapinoob Voir le message
    Est-ce quand appelant plusieurs fois le Tinfo.create je peux avoir des soucis d'AV ?
    Non.
    Mais si j'ai un .create faut que j'ai un .free ?

    parce que avec fastMM4 j'ai Tinfo x480 et mon fichier d'info contient 483 lignes et Tref x42 et mon fichier referrentiel contient 43 lignes

    Le code fait une boucle pour chaque ligne et a chaque ligne il fait un .create.

  5. #25
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 710
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 710
    Points : 13 174
    Points
    13 174
    Par défaut
    Citation Envoyé par lapinoob Voir le message
    Mais si j'ai un .create faut que j'ai un .free ?
    Bien sûr mais ce n'est pas la source de l'AV. Tout au plus des fuites mémoire à l'exécution.

  6. #26
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Bien sûr mais ce n'est pas la source de l'AV. Tout au plus des fuites mémoire à l'exécution.
    Donc si j'ai bien compris je cherche au mauvais endroit ?
    Parce que c'etait un peu le seul endroit où je plaçais de l'espoir

  7. #27
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut Nouvelle decouverte
    Apres des recherches j'ai remarqué quelque chose d'etrange
    J'ai un DisplayTextFile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       DisplayTextFile('Rapport de vérification d''un fichier d''échange', strErrFile);
    Le strErrFile est un string qui est le Nom et emplacement du fichier d'erreurs

    Et quand je l'enleve je n'ai plus d'erreurs

    Par quel autre moyen je peut ouvrir une fenetre permettant d'afficher le .txt ?

  8. #28
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    Béh, juste un petit truc, en maintenant appuyée la touche [CTRL], cliquer sur StrErrFile et voir son contenu , elle est peut être une constante déclarée quelque part, sinon faut voir avec la procédure DisplayTextFile car je doute que le deuxième paramètre est une constante dans la déclaration. Puisque t'as pu enlever StrErrFile, c'est que certainement c'est un paramètre déclaré en constante et si le débogueur ne trouve pas dans l'appel de DisplayTextFile un paramètre pour l'emplacement du fichier alors il va utiliser celui qui est par défaut ( et donc qui est passé en constante ) ...

    Faut vérifier donc avec l'implémentation de la procédure DisplayTextFile dans un premier temps, ( même principe , tu tiens la touche [CTRL] et puis tu cliques sur le nom de la procédure DisplayTextFile et tu vas obtenir le code de la proc) , dans un deuxième temps, il faut profiler l'affectation du paramètre StrErrFile .....
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

  9. #29
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 710
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 710
    Points : 13 174
    Points
    13 174
    Par défaut
    Si tu nous montres une ligne à la fois, on en a encore pour un moment
    Il serait peut-être temps de nous montrer le contenu de cette procédure DisplayTextFile...

  10. #30
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Moez.B Voir le message
    cliquer sur StrErrFile et voir son contenu , elle est peut être une constante déclarée quelque part, sinon faut voir avec la procédure DisplayTextFile car je doute que le deuxième paramètre est une constante dans la déclaration.
    StrErrFile est une variable declarée au debut mais je viens de remarqué qu'elle se transforme en constante.

    Et le 2eme parametre de DisplayTextFile est filename : string.

    Citation Envoyé par Moez.B Voir le message
    Puisque t'as pu enlever StrErrFile
    La c'est moi qui me suis mal exprimé je n'enleve pas juste le strErrFile mais toute la procedure

    Citation Envoyé par Andnotor Voir le message
    Il serait peut-être temps de nous montrer le contenu de cette procédure DisplayTextFile...
    Justement je n'arrive pas a l'atteindre cette procedure. En faisant [CTRL] + clique de la souris sa ne fait rien ainsi qu'en faisant clique droit + chercher la declaration.
    La seul chose que j'ai c'est en faisant [CTRL] + Space j'ai la ligne
    procedure DisplayTextFile(title : string;filename :string)

    Vous m'avez fait remarquez quelquechose c'est mes 3 strings declaré au debut en tant que variable ce transforme en const. C'est strings sont utilisé pour ouvrir des fichier txt ou excel.
    Je viens de tester en commentant toute les lignes dlgLoadTxt.FileName:=strInfoFile; et strErrFile:=dlgSave.FileName; et mes 3 strings repasse en var rectification il reste en const.
    Je viens de remarqué le pourquoi ils etaient en const alors qu'elles etait declarée en variable.
    Lors de la declaration ils y avait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strInfoFile : String = '';
    DlgLoadTxt vient de TopenDialog
    dlgSave vient de TsaveDialog

  11. #31
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 710
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 710
    Points : 13 174
    Points
    13 174
    Par défaut
    Citation Envoyé par lapinoob Voir le message
    Justement je n'arrive pas a l'atteindre cette procedure.
    Et bien fais une recherche globale sur DisplayTextFile : CTRL+SHIFT+F.

    Citation Envoyé par lapinoob Voir le message
    mes 3 strings declaré au debut en tant que variable ce transforme en const.
    C'est à dire

  12. #32
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Et bien fais une recherche globale sur DisplayTextFile : CTRL+SHIFT+F.
    En faisant sa je n'ai qu'une ligne qui apparait, la ligne que j'ai mis.

  13. #33
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    C'est à dire
    Au début les 3 strings sont declaré dans var et quand je les utilises en passant la souris dessus il m'indique que c'est des consts

  14. #34
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    Justement, passe faire un recherche de DisplayTextFile dans toutes les unités de ton projet,
    Ensuite essaie de changer un peu le contenu des choses, il faut s'assurer que dlgSave.FileName possède une valeur ... change cette valeur donc pour voir .
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

  15. #35
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Moez.B Voir le message
    Justement, passe faire un recherche de DisplayTextFile dans toutes les unités de ton projet,
    Invisible, en la recherchant dans toutes mes unités que j'utilise j'ai toujours la qu'une seul ligne celle de mon main

  16. #36
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    Citation Envoyé par lapinoob Voir le message
    Au début les 3 strings sont declaré dans var et quand je les utilises en passant la souris dessus il m'indique que c'est des consts
    ce sont des constantes dans la déclaration, en faite, pour une raison ou une autre on peut définir et déclarer une procédure ou bien une fonction (une méthode enfin) avec un paramètre passé comme étant une constante , je vais te donner un exemple du n'importe quoi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Interface
    function ADD( const a : integer = 6; const  b : integer = 6) :integer;
    Implementation
    function TForm1.ADD( const a, b: integer): integer;
    begin
      result := a+b;
    end;
    au moment de l'appel si tu appelles ADD sans paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(inttostr(add));
    end;
    Alors on va reprendre les paramètres passés sous forme de constantes dans la déclaration de la fonction est le résultat est égal à 12,
    si on veut appeler ADD avec des paramètres, alors dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(inttostr(add(5,5)));
    end;
    les paramètres a et b ne sont pas les constantes dans la déclaration mais ceux passés réellement dans l'appel de ADD et dans ce cas on a comme résultat 10.
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

  17. #37
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Moez.B Voir le message
    Ensuite essaie de changer un peu le contenu des choses, il faut s'assurer que dlgSave.FileName possède une valeur ... change cette valeur donc pour voir .
    J'ai pas trop bien compris, dans le code il y a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dlgLoadTxt.FileName:=strInfoFile;
       ShowMessage(strInfoFile);// affiche rien
       if dlgLoadTxt.Execute then //Permet de choisir son fichier
       begin
          resultat:=TRUE;
          strInfoFile:=dlgLoadTxt.FileName;//enregistre le fichier dans strInfoFile
    donc je sais pas quoi changé

  18. #38
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    c'est toujours flou , est ce que tu peux donner le code de toute la méthode où figure le Acess Violation ....
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

  19. #39
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Moez.B Voir le message
    c'est toujours flou , est ce que tu peux donner le code de toute la méthode où figure le Acess Violation ....
    Pour moi je pense que c'est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    begin
     
       Screen.Cursor:=crHourGlass;
       Writeln(txtFile,'');
       Writeln(txtFile,' Nombre d''erreurs : ',lngNoErr,'.');
       Writeln(txtFile,'');
       CloseFile(txtFile);
     
       // Affichage d'un bilan
       bilan:=' La vérification est terminée ! ';
       if (lngNoErr = 0) then
          bilan:=bilan+#13+#13+' Aucune erreur n''a été détectée. '
       else
          bilan:=bilan+#13+#13+' '+IntToStr(lngNoErr)
                 +' erreur(s) répertoriée(s). ';
       bilan:=bilan+#13+#13+' Rapport de vérification enregistré dans : '
                    +#13+' '+strErrFile;
       Screen.Cursor:=crDefault;
       DispMsg.DisplayInfo(bilan);
       DisplayTextFile('Rapport de vérification d''un fichier d''échange MISTRAL'; strErrFile);
       //suppression des lignes d'erreurs.
       if (stsInfo <> nil) and (stsRef <> nil) and (stsErrSyntaxe <> nil) then
       stsInfo.Clear;
       stsRef.Clear;
       stsErrSyntaxe.Clear;
    end;

  20. #40
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    Citation Envoyé par lapinoob Voir le message
    Pour moi je pense que c'est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    begin
     
       Screen.Cursor:=crHourGlass;
       Writeln(txtFile,'');
       Writeln(txtFile,' Nombre d''erreurs : ',lngNoErr,'.');
       Writeln(txtFile,'');
       CloseFile(txtFile);
     
       // Affichage d'un bilan
       bilan:=' La vérification est terminée ! ';
       if (lngNoErr = 0) then
          bilan:=bilan+#13+#13+' Aucune erreur n''a été détectée. '
       else
          bilan:=bilan+#13+#13+' '+IntToStr(lngNoErr)
                 +' erreur(s) répertoriée(s). ';
       bilan:=bilan+#13+#13+' Rapport de vérification enregistré dans : '
                    +#13+' '+strErrFile;
       Screen.Cursor:=crDefault;
       DispMsg.DisplayInfo(bilan);
       DisplayTextFile('Rapport de vérification d''un fichier d''échange MISTRAL'; strErrFile);
       //suppression des lignes d'erreurs.
       if (stsInfo <> nil) and (stsRef <> nil) and (stsErrSyntaxe <> nil) then
       stsInfo.Clear;
       stsRef.Clear;
       stsErrSyntaxe.Clear;
    end;
    Bon .... je ne vois aucune erreur ici , mais puisque tu dis qu'en enlevant DisplayTextFile , tu n'as plus cet AV, alors il faut voir comment sa fonctionne à l'intérieur , c'est bizzare que tu dis que DisplayTextFile est introuvable , et puis est ce que tu peux chercher les occurences de StrErrFIle dans cette unité et les copier , ...
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. problèmes Socket erreur : Access violation
    Par milanoran dans le forum C++
    Réponses: 5
    Dernier message: 24/10/2010, 14h15
  2. erreur "ACCESS VIOLATION"
    Par sacha400 dans le forum Collection et Stream
    Réponses: 0
    Dernier message: 14/04/2010, 18h34
  3. Réponses: 3
    Dernier message: 29/12/2009, 18h22
  4. [Lazarus] [0.9.27] Erreur access violation avec TCalendar
    Par ovni76 dans le forum Lazarus
    Réponses: 5
    Dernier message: 22/07/2009, 12h17
  5. Erreur Access Violation : API mySQL et Builder 6
    Par Invité dans le forum C++Builder
    Réponses: 33
    Dernier message: 14/11/2008, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo