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 :

Problème d'écriture d'un fichier ini


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 35
    Points
    35
    Par défaut Problème d'écriture d'un fichier ini
    Bonjour,
    ça fait un bail que j'étais pas venu poser des questions sur le forum. Mais j'en ai une pour vous, j'ai regardé la FAQ sur les fichier ini et pour les lire, je n'ai aucun problème, le code marche nickel, le problème vient quand je veux écrire. Le code est bien mais aucun changement ne se produit au fichier ini. Voilà le code et merci de m'aider.

    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
    procedure TInfoBox.OKButtonClick(Sender: TObject);
    begin
     try
     
      FileIni:= TIniFile.Create('bdd.ini');
      FileIni.WriteString('Info perso', 'Compagnie', NameBox.Text);
      FileIni.WriteString('Info perso', 'Slogan', SloganBox.Text);
      FileIni.WriteString('Info perso', 'Adresse', AdressBox.Text);
      FileIni.WriteString('Info perso', 'Ville', TownBox.Text);
      FileIni.WriteString('Info perso', 'Boite postale', BPBox.Text);
      FileIni.WriteString('Info perso', 'Code postal', CPBox.Text);
      FileIni.WriteString('Info perso', 'Indicatif', IndicatifBox.Text);
      FileIni.WriteString('Info perso', 'Phone1', Phone1Box.Text);
      FileIni.WriteString('Info perso', 'Phone2', Phone2Box.Text);
      finally
      FileIni.Free ;
      InfoBox.Close;
      end ;
    end;

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Le problème ne viendrait pas du fichier lui-même (déjà ouvert, protégé, etc.) ?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu ne seras pas en Vista ?
    Le Fichier est peut-être ailleurs, si tu ne mets pas le chemin complet, cela peut jouer ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 35
    Points
    35
    Par défaut
    Merci de vos réponses. Non je ne suis pas sous Vista et le fichier ini est dans le même dossier que mon application. Pour ce qui est du "déjà ouvert", sur la fenêtre principale, j'ai des options par boutons, quand je sélectionne le bouton de la fiche "InfoBox", avant d'ouvrir la fiche, je fais lire les données du fichier ini pour que mes "EditBox" soient remplis par les informations. Je fais bien IniFile.Free avant d'ouvrir la fiche mais peut-être qu'il ne ferme pas bien le fichier ini. Bref voilà le code du bouton qui lit le ini et ouvre la fiche.

    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
    procedure TForm1.InfoButtonClick(Sender: TObject);
    begin
     try
      FileIni:=TMemIniFile.Create('bdd.ini');
      InfoBox.NameBox.Text := FileIni.ReadString('Info perso', 'Compagnie', '' );
      InfoBox.SloganBox.Text := FileIni.ReadString('Info perso', 'Slogan', '' );
      InfoBox.AdressBox.Text := FileIni.ReadString('Info perso', 'Adresse', '' );
      InfoBox.TownBox.Text := FileIni.ReadString('Info perso', 'Ville', '' );
      InfoBox.BPBox.Text := FileIni.ReadString('Info perso', 'Boite postale', '' );
      InfoBox.CPBox.Text := FileIni.ReadString('Info perso', 'Code postal', '' );
      InfoBox.IndicatifBox.Text := FileIni.ReadString('Info perso', 'Indicatif', '' );
      InfoBox.Phone1Box.Text := FileIni.ReadString('Info perso', 'Phone1', '' );
      InfoBox.Phone2Box.Text := FileIni.ReadString('Info perso', 'Phone2', '' );
      finally
      FileIni.Free ;
      InfoBox.Show;
      end ;
    end;
    Un grand merci encore.

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Pourqu'elle raison TIniFile et TMemIniFile, et sinon "Create('bdd.ini');" le chemin en cours peu changer avec un OpenDialog par exemple, moi je mettrais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Create(ExtractFilePath(Application.ExeName) + 'bdd.ini');
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    +1 pour ShaiLeTroll

    et voici la raison:

    La portion ecriture de ton inifile est basé sur TInifile qui est lui-même basé
    sur les API de windows... et entre autre
    WritePrivateProfileString

    le help de cette fonction nous dit ceci:
    If the lpFileName parameter does not contain a full path and filename for the file, WritePrivateProfileString searches the Windows directory for the file. If the file does not exist, this function creates the file in the Windows directory.
    Pour la partie Lecture tu utilise TMemIniFile() qui est basé sur des
    TFileStreams qui utilisent le répertoire de l'application par défault via
    FileOpen() et eventuellement CreateFile().

    Finalement tu lis toujours le mauvais fichier...ou tu écrit toujours dans le mauvais...

    Donc conclusion TOUJOURS fournir le path complet lorsqu'on manipule des fichiers... ça évite bien des surprise....
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  7. #7
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    [...] Non je ne suis pas sous Vista et le fichier ini est dans le même dossier que mon application. [...]
    cela signifie que si tu as des utilisateurs sous VISTA, hé bien l'écriture en INI sera virtualisée puisque VISTA interdit (UAC oblige) les écritures en Program Files.

    Bon... ça peut passer, mais en ce cas ton appli ne sera pas en principe 100% compatible VISTA.

    Autrement dit, désormais la bonne habitude du programmeur est de ne plus placer d'INI dans le répertoire de son appli, sauf si cette dernière est ailleurs qu'en PF, mais le conseil est d'absolument éviter cette proximité.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 35
    Points
    35
    Par défaut
    Je vous remercie tous pour cette attention que vous avez porté à mon sujet de discution. Vous m'avez appris des choses dont je ne me doutais point et je trouve ça géniale de pouvoir agrandir mes connaissance dans le domaine de la programmation en Delphi. Alors je vais faire en sorte que l'ini soit dans un dossier autre, peut-être système32 ou quelque chose du genre.

    Merci à vous, vous êtes une grande équipe qui travaillent efficacement.

  9. #9
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Citation Envoyé par dan_lizhot Voir le message
    Je vous remercie tous pour cette attention que vous avez porté à mon sujet de discution. Vous m'avez appris des choses dont je ne me doutais point et je trouve ça géniale de pouvoir agrandir mes connaissance dans le domaine de la programmation en Delphi. Alors je vais faire en sorte que l'ini soit dans un dossier autre, peut-être système32 ou quelque chose du genre. [...]
    Je ne crains que tous les folders sous ...\Windows ne soient protégés par l'UAC ; alors le System ou System32, là tu cherches et trouveras la réaction de l'UAC

    Mais regarde ici, certainement des choses qui te seront utiles :
    http://www.developpez.net/forums/sho...d.php?t=525325

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 35
    Points
    35
    Par défaut
    Super, un autre précieux conseil

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

Discussions similaires

  1. Probléme d'enregistrement dans un fichier ini
    Par jv2759 dans le forum Delphi
    Réponses: 2
    Dernier message: 19/05/2006, 15h30
  2. [C#] PRoblème d'écriture d'un fichier avec accent
    Par shinchan dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/04/2006, 09h13
  3. Réponses: 3
    Dernier message: 28/02/2006, 12h41
  4. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  5. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28

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