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 :

TExcelApplication : erreur en quittant le programme


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Par défaut TExcelApplication : erreur en quittant le programme
    'jour

    J'utilise un TExcelApplication pour ouvrir un classeur, récuperer la valeur d'une case, puis la rafraichir de temps en temps avec un timer.
    Quand je quitte mon programme, je disconnect le TExcelApplication dans le OnClose de ma fiche principale, le classeur est déjà refermé, mais j'ai une exception EAccessViolation, qui n'arrive pas si je ne vais pas chercher la valeur de la case (le texcelapplication est ouvert automatiquement). En debug, c'est la fenetre CPU qui s'affiche, impossible donc de savoir quelle ligne provoque l'erreur.

    Des idées d'où peut venir l'erreur ? Ou au moins comment la localiser ?

  2. #2
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    sur le onclose, après avoir fait ton disconnect, essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TExcelapplication1.free;
    bonne journée !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Par défaut
    Le TexcelApplication est inclus dans la fiche à la conception, il est pas censé ête libéré automatiquement ?

    (j'ai pas trop bossé sur les fiches)

  4. #4
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    J'ai toujours pris l'habitude de faire un .free quand je pilotais Excel mais c'est vrai que je créais le composant dynamiquement, il n'était pas posé sur la fiche...

    et si tu le créé dynamiquement, avec le .free ça fonctionne ?

    (voir FAQ pour ça)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Par défaut
    J'ai plus l'occaze de tester, l'erreur arrive maintenant plus tot. J'appelle une fonction et l'erreur AccessViolation apparait avant meme que je rentre dans le corps de la fonction ! (en debug pas à pas : l'erreur se produit quand je passe du begin à la 1ere ligne de la fonction).

    La fonction en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function TForm1.FautResize(ligne : array of TInfoCell) : boolean;
    begin
      result := false;
      if high(ligne) < 0 then
        begin
        result := true;
        exit;
        end;
      if ligne[high(ligne)].affecte = true then
        result:= true;
    end;
    Je comprends plus rien, au secours !

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    ton tableau est initialisé ?
    Ce type d'approche devrait être suffisant pour fermer Excel, le composant étant effectivement libéré par la forme contenant le composant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ExcelWorksheet1.Close;
     ExcelWorksheet1.Disconnect;
     ExcelWorkBook1.Close;
     ExcelWorkBook1.Disconnect;
     ExcelApplication1.Quit;
    Que souhaites-tu tester avec ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if high(ligne) < 0 then

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Par défaut
    C'est pour tester si le tableau contient au moins 1 élément.
    Pour ce qui est des erreurs, elles ont disparu en transmettant le paramètre ligne par adresse (var). Plus d'erreur depuis...

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

Discussions similaires

  1. détecter une erreur et arreter le programme en cour
    Par timbrochier dans le forum Langage
    Réponses: 6
    Dernier message: 23/11/2006, 11h03
  2. Erreur au lancement du programme
    Par tazamorte dans le forum MFC
    Réponses: 4
    Dernier message: 08/09/2006, 18h41
  3. Erreur à la sortie du programme
    Par Sachiel31 dans le forum C++
    Réponses: 19
    Dernier message: 26/07/2006, 09h47
  4. Delphi 2005 Indy 9 Erreur au lancement du programme
    Par Houben Jacques dans le forum Web & réseau
    Réponses: 4
    Dernier message: 08/11/2005, 12h05
  5. Delphi 2005 : Erreur de compilation du programme
    Par bigbestboy dans le forum Langage
    Réponses: 6
    Dernier message: 03/08/2005, 18h14

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