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

Composants VCL Delphi Discussion :

[D7] Dépassement de pile à l'impression avec Quick Report


Sujet :

Composants VCL Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [D7] Dépassement de pile à l'impression avec Quick Report
    Bonjour,

    Pas expert en Delphi, j'ai un souci avec 2 applis dont je me retrouve en charge.
    Elles sont développées sous Delphi 7 Entreprise avec Quick Report 3.0.
    Ces applis étaient à l'origine sous Delphi 4 et QR1 : j'ai appliqué l'utilitaire de conversion adhoc. La compilation passe nickel.

    Mais à l'exécution, j'ai un débordement de pile quand je lance l'édition d'un état une deuxième fois (le même ou avec des données différentes) dans la même session.
    La première fois RAS, mais lors du deuxième appel : plantage. Pour pouvoir réimprimer, je dois fermer l'appli et la relancer. (En gros, je ne peux faire qu'une édition par session).

    L'appel semble clair (MaForm.MonQuickRep.Print) après voir enregistré et filtrer mes données dans une procédure de "MaForm".

    L'accès aux données est classique (tables Paradox et BDE)

    L'etat comprend :
    - des QRLabels dont le texte reprend des valeurs de labels ou edits de ma forme ou de la table en cours,
    - au moins un QRChart dont les valeurs des séries sont affectées par code.


    Je sais pas par quel bout prendre le truc...

  2. #2
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Salut,

    Bienvenue sur le forum de developpez.com :
    Et permet moi de te féliciter : c'est ton premier post et il est conforme aux règles

    Pour ce qui concerne ton débordement de pile, cela est peut etre du à un problème de réinitialisation d'un objet (sans doute Compo QR). Le composant est-il détruit entre temps, a-t-il une variable qui doit etre réinitialisé, etc ...

    Tu peux faire une exécution pas-à-pas avec F7, tu sauras ainsi exactement quelle est la ligne qui pose problème.

    a bientot
    CV :
    - LinkedIn
    - Viadeo

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Ben ça aide pas : j'avais déjà tenté la manip mais quand j'exécute en pas à pas, on me demande des .pas que je n'ai pas (et pour cause : fichiers source de Quick Report) donc je passe sur le fenètre d'analyse du CPU et là.. c'est le brouillard total.
    Je plante bien mais je ne sais pas où : mon code ou une partie QR.

    Et puis ce n'est plus un débordement, mais une série de violations d'accès avec des adresses et je ne sais pas les exploiter... Est-ce parce que le débogueur ne trouve pas ce qu'il cherche ou bien c'est lié au problème originel ? comment faire le lien entre cette adresse et le source ?

    M'enfin en m'acharnant j'arrive quand même à trouver un truc bizarre :
    un blocage sur une procedure liée à un QRDBChart (QRTee.pas) au moment de l'utilisation de AddXY()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Serie1
    Do begin
     
       AddXY(Notes[Val1], Val1,'titre1',couleur);
       AddXY(Notes[Val2], Val2,'titre2',couleur);
    end;
    Lors du deuxième passage (2° édition de l'état), le programme se scotche sur cette procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TQRDBChart.Invalidate;
    begin
      if Parent<>nil then Parent.Invalidate;
    end;
    qui semble être une procédure de validation des données affectées aux séries. Mais bien sûr je n'en sais pas plus que ce que l'on trouve dans l'aide de TeeChart livrée avec D7 : je l'épluche en ce moment mais je n'y ai pas encore trouvé mon bonheur (si tant est qu'il soit dedans).

    Toutes les joies du débogage sur un source qui vous tombe dessus quoi...
    Evidemment y a pas un commentaire ou un doc à dispo, comme d'hab.

    Petit coup de gueule du moment après 3 heures de débogage infructueuses :
    ORGANISEZ VOS CODES ET COMMENTEZ-LES !
    On le dira jamais assez. Ca sert toujours même pour soi : reprendre un source dans un an ou plus, il faut pas tout miser sur sa mémoire...

    Voila, vous y êtes pour rien mais ça fait du bien ... à moi un peu.

    Enfin bon ! Si tout ça parle à quelqu'un je suis preneur

  4. #4
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Je ne connais Quick Report que de nom (j'utilise RaveReport). Mais cela est peut être du en effet à QR et non à Delphi.

    As tu fais une recherche sur le forum ?
    peut-être une solution la dedans mais pas sûr : (le lien ne marche pas, mais tu peux faire une recherche avancée en recherchant les mots clé Quick+Report dans forum delphi)
    CV :
    - LinkedIn
    - Viadeo

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    salut, moi aussi j'ai rien touver de spécile sue QR mais qui ma aidée un peut ce sont les example données avec delphi executer les et voir
    tu peut les utlisé en changant leur aspect pour tes besoins,,bon dev
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Pour ton objet Series, tu le "recharges" à chaque edition.As-tu bien pensé à le réinitialiser avant ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Serie1 
    Do begin 
        Clear; // ou items.clear ..... sinon tu rajoutes a chaque fois les items 
                 // suivants
       AddXY(Notes[Val1], Val1,'titre1',couleur); 
       AddXY(Notes[Val2], Val2,'titre2',couleur); 
    end;

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je crois que je ne fais pas de conneries : j'ai épuré le code au max et j'ai toujours l'erreur.

    J'ai un truc aussi avec le projet en exemple de Teechart : la deuxième impression ne plante pas mais ne se fait pas. J'ai ajouté un bouton avec TDBChart.Print, une messagebox et un nouvel appel à Print : pas de 2° impression. Strange quand même...

    C'est même pire que ça dans mes applis : une preview passe mais pas l'impression appelée depuis la fenêtre de preview.

    La prodédure de 'Invalidate" de QRtee.pas recherche si la série appartient bien à quelqu'un ('Parent' = TChart) mais au 2° passage, la valeur est à Nil !?!? alors que rien n'a changé apparemment. Et ça boucle indéfiniment ce qui sature la pile.

    Je reinitialise bien la serie avec un clear. J'ai même essayé de la supprimer dans l'AfterPrint de l'état et de la recréer dans le BeforePrint. Rien n'y fait;

    En plus, j'ai la même erreur sur 2 machines de développement, donc pas de pb d'install à première vue.

    Je m'arrache les cheveux.

  8. #8
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Salut,

    Si tu penses que cela est une erreur de Quick Report et non de Delphi, tentes alors de poster un message dans le forum Générateurs d'états
    (N'oublie pas de delester ce message si tu postes sur un autre forum)

    Bon courage,
    CV :
    - LinkedIn
    - Viadeo

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [Resolu]
    ça y est : je crois avoir trouvé. Effectivement, le problème n'est pas spécifique Delphi mais plus Quick Report et TeeChart.

    Mes états (et applis) ont été conçus au départ sous Delphi 2 et QR 1 : pour pouvoir les réutiliser sous Delphi 7 et QR 3, il m'a fallu appliquer un patch fourni par Borland pour convertir les états d'une V1 à une V3.
    (QuickReport 1 to QuickReport 3 converter.)

    Ce patch n'est pas fiable : en reprenant exactement le même code mais en récréant totalement l'état (à l'identique) sous la version actuelle, il n'y a plus de problème. La prise en charge des TeeChart ne doit pas être au top...

    Voilà, par contre maintenant je maitrise un peu mieux mon source... et QR.

    Merci de votre aide, faute de solutions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impression Par Quick Report
    Par BYALI dans le forum Bases de données
    Réponses: 4
    Dernier message: 19/01/2008, 16h51
  2. 3 soucis avec quick report
    Par youcef_b_dz dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/05/2007, 23h09
  3. Faire un état de sortie avec Quick Report
    Par Ombre14 dans le forum Delphi
    Réponses: 2
    Dernier message: 16/10/2006, 13h33
  4. l'impression avec crystal report
    Par cleaver dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 07/05/2006, 17h51
  5. Impression avec rave report
    Par katy2063 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/12/2005, 21h35

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