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

C++Builder Discussion :

Bug builder? TIniFile et TSaveDialog


Sujet :

C++Builder

  1. #1
    Membre habitué
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Points : 135
    Points
    135
    Par défaut Bug builder? TIniFile et TSaveDialog
    Bonjour à tous.

    J'utilise Builder depuis quelques années, et je viens de tomber sur quelque chose qui me semble être un bug (vous jugerez vous mêmes).
    Je programme un logiciel qui doit, à un moment donné, mémoriser des adresses de répertoires afin de venir y stocker des fichiers ou venir les chercher. J'utilise donc dans ma fenêtre, un TSaveDialog qui me permet de choisir un répertoire (en faisant samblant d'y enregistrer un fichier "[ici]"). Je récupère alors le nom de ce fichier virtuel, d'où j'extrais le répertoire. Jusqu'à là, ça marche. Ensuite, j'enregistre ce chemin dans un TEdit (edit->Text). Ca marche aussi. Lorsque je valide mes modifs, j'ouvre un TIniFile et je fais un simple ini->WriteString("section","clé",edit->Text) qui m'enregistre le chmin dans le fichier ini.
    A partir de là se produisent 2 situations différentes:
    - soit, si j'ai entré le chemin à la main dans mon TEdit, la chaine s'enregistre bien dans le INI
    - soit, si j'ai utilisé le TSaveDialog pour générer la chaine (dans le même TEdit), il ne se produit rien dans le INI! Pourtant, la lecture de edit->Text produit le bon résultat.

    Je vous envoi le code.


    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
     
    void __fastcall TFormReglages::BtnPathClick(TObject *Sender)
    {
         dlgPathCartes->InitialDir = EdtPathCartes->Text;
         if (dlgPathCartes->Execute()){
              EdtPathCartes->Text = dlgPathCartes->FileName.SubString(0,dlgPathCartes->FileName.Length()-5);
         }
    }
     
    void __fastcall TFormReglages::BtnValideClick(TObject *Sender)
    {
         TIniFile* conf = new TIniFile("./config.ini");
     
         conf->WriteString("COM","comport",cmbCOM->Text);
     
         AnsiString str1 = EdtPathCartes->Text;
         AnsiString str2 = EdtPathLogCartes->Text;
         AnsiString str3 = EdtPathLog->Text;
     
         MessageBox(NULL,(str1+" "+str2+" "+str3).c_str(),"",MB_OK);
     
         conf->WriteString("PATH","cards",str1);
         conf->WriteString("PATH","logcards",str2);
         conf->WriteString("PATH","log",str3);
         delete(conf);
    }
    Vous avez pu remarquer la ligne avec le cmbCOM qui me permet aussi d'enregistrer le nom du port COM dans le INI, bref, cette ligne là marche à tous les coups, meme si les suivantes ne marchent pas... Etrange non?

    Pour info, le MessageBox affiche bien le contenu des TEdit, meme remplis avec le TSaveDialog.
    Les options de TSaveDialog sont les suivantes:
    [ofReadOnly,ofHideReadOnly,ofPathMustExist,ofNoReadOnlyReturn,ofEnableSizing,ofDontAddToRecent]

    Qu'en pensez vous? Croyez vous un bug de Builder? ou alors quelque chose m'échappe? En attendant, je vais les rentrer à la main!

    Merci!
    Benz
    Benz
    ______________________________________________________________
    Software is like sex, it's better when it's free - Linus Torvalds

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Salut,

    Tu utilises un chemin relatif pour ouvrir ton fichier ini. Or Le TSaveDialog modifie ton repertoire courant sauf si tu mets à true l'option ofNoChangeDir ce qui n'est pas le cas. Active cette option est voilà cela fonctionnera...

  3. #3
    Membre habitué
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Points : 135
    Points
    135
    Par défaut
    Bravo! Merci pour ta réponse efficasse et, qui plus est, rapide!
    Cela fonctionne... Et effectivement, il m'avait enregistré des petits config.ini un peu partout sur le disque en faisant les essais!!
    Merci
    Benz
    ______________________________________________________________
    Software is like sex, it's better when it's free - Linus Torvalds

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

Discussions similaires

  1. [Débutant] Bug sur C++Builder 2009
    Par sivaller dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/03/2011, 19h56
  2. bug de Boland C++ Builder
    Par manworms2 dans le forum C++Builder
    Réponses: 5
    Dernier message: 09/12/2008, 15h03
  3. Bug C++ Builder 6 ? - "while" et doubles
    Par majke dans le forum C++Builder
    Réponses: 18
    Dernier message: 25/10/2006, 12h05
  4. Bug sous builder
    Par Colinbayard dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/01/2005, 09h45
  5. Bugs à la fermeture de Builder
    Par yvslms dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/06/2004, 17h00

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