Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1077 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Delphi - Erreur de Dingue

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Delphi - Erreur de Dingue

n°1230625
niko549
Posté le 25-10-2005 à 16:18:44  profilanswer
 

Bonjour a tous,
 
Je fini de developper une application Delphi qui execute et affiche des rapports Crystal Reports.
 
Voici la facon dont je gere les composants crystal :
 
** Declarations  des composants **
CRreport1 : TCRreport;
CRapplication1 : TCRapplication;
CRviewer1 : TCRviewer;
 
 
 
** Codes **
 
CRreport1.ConnectTo(CRapplication1.OpenReport(CRtarget,crOpenReportbyTempCopy));
// CRtarget (string) contient le chemin vers le rapport //
 
CRviewer1.ReportSource := CRreport1.DefaultInterface;
Crviewer1.ViewReport;
 
CRreport1.DefaultInterface._Release;
 
Lors de l'ajout de cette derniere ligne, une erreur se produit lorsque je quitte l'application :
"Exception EAccessViolation dans le module ..."
 
Sans lien avec la premiere (jimagine),
une seconde erreur lors de l'affichage de certains rapports:
"Violation d'acces a l'adresse 77C473D4 dans le module 'msvcrt.dll'. Lecture de l'adresse 00D97000".
 
C'est donc un problem d'acces et si quelqu'un est specialiste dans la gestion des ces erreurs il est le bienvenu!
 
Remarque: Je tourne sur Win XP :-(
 
Merci a tous.
 
Niko.

mood
Publicité
Posté le 25-10-2005 à 16:18:44  profilanswer
 

n°1230649
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-10-2005 à 16:31:58  profilanswer
 

Heu t'es sûr que c'est une bonne idée d'appeler ce "_Release" ? T'es pas censé l'appeler, et surtout pas si en plus l'objet est encore utilisé (puisque assigné à CRViewer1.ReportSource)
 
C'est pas un problème d'accès, mais un problème d'accès à une zone de mémoire à laquelle il ne faudrait pas accéder. Par exemple parce qu'un pointeur pointe vers un objet qui n'existe plus (qui a été supprimé "manuellement", via ton _Release par exemple)


Message édité par antp le 25-10-2005 à 16:32:57

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1230659
niko549
Posté le 25-10-2005 à 16:36:36  profilanswer
 

Ok mais pourquoi les tutoriaux indiquent qu'il faut liberer le CRreport avant de fermer l'application ?
 
Je peut donc enlever cette ligne sans risquer d'avoir d'autres erreurs ?

n°1230848
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-10-2005 à 18:10:09  profilanswer
 

Ça dépend comment il est créé... il est créé comment ?
Mais là tu libères pas le CReport, tu libères un de ses éléments.
(et ce Release, tu le faisais à quel moment?)


Message édité par antp le 25-10-2005 à 18:10:26

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1231205
niko549
Posté le 26-10-2005 à 08:55:07  profilanswer
 

Une form1 contient les edit et les combobox pour remplir les parametres des rapports.
Une form2 avec le viewer affiche simplement les rapports et c a lactivation de cette form que les composants sont initialises:
 
CRreport1.ConnectTo(CRapplication1.OpenReport(CRtarget,crOpenReportbyTempCopy));
 
// passage des parametres ici si necessaires //
 
CRviewer1.ReportSource := CRreport1.DefaultInterface;
Crviewer1.ViewReport;
 
Voila. Si je me limite a ces codes cela fonctionne.  
Simplement une erreur lors de l'affichage de certains rapports mais l'erreur ne survient pas toujour alors catastrophe pour en trouver la cause !
"Violation d'acces a l'adresse ... dans le module 'msvcrt.dll'. ..."
 
Ca me rend fou.
Merci.

n°1231231
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-10-2005 à 09:47:35  profilanswer
 

En tout cas si tu ne crées pas d'objet explicitement, tu ne dois normalement pas les détruire. Tout ce qui appartient à la Form sera libéré par celle-ci.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1231321
niko549
Posté le 26-10-2005 à 10:45:48  profilanswer
 

Ok. C ce que jimaginait aussi.
Merci.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Delphi - Erreur de Dingue

 

Sujets relatifs
VBScript et erreur Access à récupérererreur a la compil (niveau noob)
Delphi - Pb d'horloge...delphi et ligne de commande
autre erreur pr linitialisation de matrice[résolu] erreur javascript sous IE (FireFox et Opera ok)
erreur "too many initializer"erreur "too many initiali
(RESOLU) : Comment ajouter un message d'erreur?Erreur nouvelle ?
Plus de sujets relatifs à : Delphi - Erreur de Dingue


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR