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 fermeture programme?


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut Erreur fermeture programme?
    Bonjour,
    J'ai mis en ligne une nouvelle version de mon programme et j'ai un petit souci, un utilisateur à mis en commentaire dans un site de téléchargement que mon programme générait des erreurs lors de sa fermeture. Malgré mes tests sur les différentes machine auxquelles j'ai accès, je n'ai pas pu reproduire l'erreur et je n'ai pas de moyen de contacter le posteur. Y aurait il des personnes qui auraient quelques minutes à perdre pour installer mon programme et me dire si ça plante chez eux lors de la fermeture et m'indiquer sous quelle version de Windows ils sont?
    Merci
    lien :
    http://homeproduction.free.fr/mycalc2/mycalc2.exe

    (C'est une calculatrice scientifique)

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Sous Vista Pro SP 2.

    Au 1° lancement puis fermeture immédiate de la calculatrice, j'ai bien une série d'AV avec ce message:

    Impossible d'enregistrer le caractère dans le codage ISO-8859-1
    Puis kill de l'application depuis le gestionnaire de tâches.

    A noter que aucune AV ne se déclenche lors des lancements suivants de l'application.

    [edit] Très belle interface.

    @+ Claudius.

  3. #3
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    ça, ça ressemble à une erreur d'écriture dans un fichier xml, un peu comme décrit ici :
    http://support.microsoft.com/kb/291370/fr
    Bidouilleuse Delphi

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    J'enregistre effectivement un fichier xml à la fermeture du programme. En caractères spéciaux j'ai le symbole €. Je pense que c'est lui le coupable. Pour le moment je le remplace par le lettre 'E'.
    J'ai fait une lise à jour de l’exécutable. Cela corrige t il l'erreur?

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par endemyon Voir le message
    Cela corrige t il l'erreur?
    Malheureusement non.
    Exactement les mêmes symptômes.

    @+

  6. #6
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par endemyon Voir le message
    J'enregistre effectivement un fichier xml à la fermeture du programme. En caractères spéciaux j'ai le symbole €. Je pense que c'est lui le coupable. Pour le moment je le remplace par le lettre 'E'.
    J'ai fait une lise à jour de l’exécutable. Cela corrige t il l'erreur?
    Je n'ai aucun message d'erreur
    WinXP SP2


  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Aïe j'en ai une belle

    Apres changement de skin j'ai du prendre l'avant dernier en bas ensuite j'ai cliquer sur les doubles fleche a cote du mot SKIN (il faut deviner !!! lol)

    Et la



    Et maintenant je l'ai à chaque ouverture. Ensuite je te raconte pas la tête de la calculatrice !!! et on ne peut plus choisir un SKIN par le biais du bouton Menu.

    A part cela et avant ce bug, j'ai pu remarqué que si tu la minimize c'est dommage dans la barre des tâches c'est écrit FMain.

    Bye

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Voici le code de fermeture de la fiche principale :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    procedure TFMain.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      i: integer;
    begin
      //on sauvegarde les paramètres dasn un fichier xml
      XMLdoc.ChildNodes.Clear;
      XMLdoc.Version := '1.0';
      XMLdoc.Encoding := 'ISO-8859-1';
      with XMLdoc.AddChild('MyCalc2') do
      begin
        with AddChild('Options') do
        begin
          if Mem = M100 then
            AddChild('Storage_registers').Text := 'M100'
          else
            AddChild('Storage_registers').Text := 'M10';
          if Draw = DFix then
            AddChild('Number_format').Text := 'Fix'
          else if Draw = DSci then
            AddChild('Number_format').Text := 'Sci'
          else
            AddChild('Number_format').Text := 'Eng';
          AddChild('Decimals').Text := SysUtils.inttostr(digits);
          if Angle = ADegre then
            Addchild('Angular_mode').Text := 'Deg'
          else if angle = ARadian then
            AddChild('Angular_mode').Text := 'Rad'
          else
            AddChild('Angular_mode').Text := 'Grad';
          AddChild('Decimal_separator').Text := decimalSeparator;
          Addchild('Digit_group').Text := thousandseparator;
          AddChild('Skin_name').Text := skin;
          AddChild('Mode').Text := inttostr(ord(Mode));
          AddChild('Fn').Text := inttostr(ord(Fn));
        end;
        decimalseparator:='.';
        with AddChild('Memory') do
        begin
          for i := 0 to 3 do
            AddChild('Pile' + SysUtils.inttostr(i)).Text :=
              SysUtils.floattostr(Pile[i]);
          for i := 0 to 3 do
          begin
            if PileComplex[i].imaginary < 0 then
              AddChild('PileComplex' + SysUtils.inttostr(i)).Text :=
                floattostr(PileComplex[i].real) +
                  floattostr(PileComplex[i].imaginary) + 'i'
            else
              AddChild('PileComplex' + SysUtils.inttostr(i)).Text :=
                floattostr(PileComplex[i].real) + '+' +
                  floattostr(PileComplex[i].imaginary) + 'i'
          end;
          for i := 0 to 99 do
            AddChild('Mem' + SysUtils.inttostr(i)).Text :=
              SysUtils.floattostr(memories[i]);
          for i := 0 to 99 do
          begin
            if memoriescomplex[i].imaginary < 0 then
              AddChild('MemComplex' + inttostr(i)).Text :=
                floattostr(MemoriesComplex[i].real) +
                  floattostr(MemoriesComplex[i].imaginary) + 'i'
            else
              AddChild('MemComplex' + SysUtils.inttostr(i)).Text :=
                floattostr(MemoriesComplex[i].real) + '+' +
                  floattostr(MemoriesComplex[i].imaginary) + 'i'
          end;
          for i := 1 to 100 do
            AddChild('Sec_display' + SysUtils.inttostr(i)).Text := ruban[i];
          AddChild('Main_display').Text := EDisplay.Text;
        end;
        With AddChild('Statistics') do
        begin
          AddChild('Count').Text := SysUtils.inttostr(StatData.Count);
          for i := 0 to StatData.Count - 1 do
          begin
            AddChild('Data'+inttostr(i)+'X').Text := SysUtils.FloatToStr(Xdata[i]);
            AddChild('Data'+inttostr(i)+'Y').Text := SysUtils.FloatToStr(Ydata[i]);
          end;
     
        end;
        with AddChild('Money_Convertor') do
        begin
          AddChild('F1From').text := SysUtils.inttostr(Cur1FromIndex);
          AddChild('F1To').text := SysUtils.inttostr(Cur1ToIndex);
          AddChild('F2From').text := SysUtils.inttostr(Cur2FromIndex);
          AddChild('F2To').text := SysUtils.inttostr(Cur2ToIndex);
          AddChild('F3From').text := SysUtils.inttostr(Cur3FromIndex);
          AddChild('F3To').text := SysUtils.inttostr(Cur3ToIndex);
          AddChild('F4From').text := SysUtils.inttostr(Cur4FromIndex);
          AddChild('F4To').text := SysUtils.inttostr(Cur4ToIndex);
        end;
        with AddChild('Custom_Fonction') do
        begin
          for i := 1 to 36 do
          begin
            AddChild('Button' + SysUtils.inttostr(i) + 'Caption').Text :=
              BCaption[i];
          end;
        end;
        with AddChild('Tracer') do
        begin
          for i := 0 to 3 do
          begin
            AddChild('Function' + inttostr(i)).Text := equation[i];
            addChild('Color' + inttostr(i)).Text := inttostr(EquationColor[i]);
            AddChild('Devirative' + inttostr(i)).Text := derivative[i];
            AddChild('EquationCheck' + inttostr(i)).Text :=
              booltostr(EquationCheck[i]);
            AddChild('DerivativeCheck' + inttostr(i)).Text :=
              booltostr(DerivativeCheck[i]);
          end;
        end;
        with AddChild('Timer') do
        begin
           AddChild('Alarm').Text:=booltostr(Alarm);
           AddChild('Alarm_time').Text:=floattostr(AlarmTime);
        end;
      end;
      ForceDirectories(AppDataPath);
      XMLdoc.SaveToFile(AppDataPath + 'MyCalc2' + '.xml');
      ForceDirectories(AppDataPath + '\Functions\');
      //on sauve les fonctions personalisées
      for i := 1 to 36 do
      begin
        if BCode[i] <> nil then
        begin
          BCode[i].SaveToFile(AppDataPath + '\Functions\' +
            'F' + SysUtils.IntToStr(i) + '.txt');
          BCode[i].Free;
        end;
      end;
      //on libère les ressources
      if assigned(ChronoThread) then
        ChronoThread.Terminate;
      if assigned(CountDownThread) then
        CountDownThread.Terminate;
      StatData.Free;
      setlength(XData,0);
      setlength(YData,0);
      setlength(DeltaY,0);
    end;
    Quelqu'un voit il ou peut être le problème?

  9. #9
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Pour ceux qui ont l'erreur précitée plus haut, en appliquant le patch Microsoft de cette page : http://support.microsoft.com/kb/291370/fr

    ...ça donne quoi ?

    Lien direct : http://download.microsoft.com/downlo...-us/gb2312.exe

    Je suppose fortement que ça vienne de là, que c'est encore la faute à Bill Gates
    Bidouilleuse Delphi

  10. #10
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Après quelques tests, cela vient bien du fichier xml (MyCalc2.xml), et du caractère €.
    J'ai donc substitué le caractère € par E (pour tes 2 boutons: Button5Caption et Button6Caption) et plus d'AV à la fermeture.

    @+

    Citation Envoyé par LadyWasky Voir le message
    ça, ça ressemble à une erreur d'écriture dans un fichier xml, un peu comme décrit ici :
    http://support.microsoft.com/kb/291370/fr
    Elle a du flair cette Lady.
    Au fait ton lien vers gb2312.exe, c'est juste un xml de test.

  11. #11
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Elle a du flair cette Lady.
    Je ne sais plus où me mettre
    Citation Envoyé par Cl@udius Voir le message
    Au fait ton lien vers gb2312.exe, c'est juste un xml de test.
    crotte, je me suis trompée cette fois ci
    Bidouilleuse Delphi

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Merci Buzz pour ton signalement de bug.
    Pour le bug de la skin, je vois, ce qui se passe. Je parse le dossier oû sont les vignettes des skins sans vérifier que ce sont bien des images et ton windows a ajouté un fichier thumbs de vignette. Je vais corriger en vérifiant bien que le programme ne prenne en compte que les fichiers qui sont des images png.
    Je vais aussi charger la skin par défaut si il y a une erreur de lecture du fichier de configuration

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 115
    Points
    115
    Par défaut
    Salut,

    Effectivement, il est possible que le problème vienne du €. Tu dois remplacer la ligne, l'iso-8859-1 ne prend pas en charge le €
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    XMLdoc.Encoding := 'ISO-8859-1';
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    XMLdoc.Encoding := 'Windows-1252';
    J'ai eu le même genre de problème dans une de mes application et maintenant tout va bien.

Discussions similaires

  1. [WD16] Erreur fermeture programme ODBC/ADODB
    Par draco951 dans le forum WinDev
    Réponses: 7
    Dernier message: 10/02/2012, 09h01
  2. Erreur fermeture programme ODBC/ADODB
    Par draco951 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 10/01/2012, 10h33
  3. Réponses: 3
    Dernier message: 23/09/2009, 17h30
  4. [VBA] Erreur Fermeture Recordset
    Par seb92400 dans le forum VBA Access
    Réponses: 8
    Dernier message: 09/02/2007, 19h46
  5. Réponses: 2
    Dernier message: 06/02/2007, 18h12

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