Est-ce quand appelant plusieurs fois le Tinfo.create je peux avoir des soucis d'AV ?
Apres des recherches j'ai remarqué quelque chose d'etrange
J'ai un DisplayTextFile
Le strErrFile est un string qui est le Nom et emplacement du fichier d'erreurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part DisplayTextFile('Rapport de vérification d''un fichier d''échange', strErrFile);
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 ?
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]
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...
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.
La c'est moi qui me suis mal exprimé je n'enleve pas juste le strErrFile mais toute la procedure
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 stringsrepasse en varrectification 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 avaitDlgLoadTxt vient de TopenDialog
Code : Sélectionner tout - Visualiser dans une fenêtre à part strInfoFile : String = '';
dlgSave vient de TsaveDialog
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]
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:
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
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;
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,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(inttostr(add)); end;
si on veut appeler ADD avec des paramètres, alors dans ce cas :
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.
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;
"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]
J'ai pas trop bien compris, dans le code il y adonc je sais pas quoi changé
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
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]
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]
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager