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 :

[VCL] TIniFile problème


Sujet :

Composants VCL Delphi

  1. #1
    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 [VCL] TIniFile problème
    Salut à tous
    J'ai un pépin avec un TIniFile (d'où le titre )
    J'ai un fichier Machin.dat qui contient des données:
    Citation Envoyé par Mon fichier
    ** Definition FIle **
    [Materials]
    Material0=Machin
    Material2=Bidule
    [Textures]
    Texture0=Chose
    Texture1=Truc
    etc...
    Seulement voila, si j'utilise un TIniFIle, ça ne marche pas (aucun message d'erreur mais il ne récupère rien)
    Exemple, si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    i:=0;
    s:=IniFIle.ReadString('Materials','Material'+IntToStr(i),'');
    s reste désespérément vide....
    Là où c'est cocasse (si j'ose m'exprimer ainsi ), c'est qu'il suffit que je remplace TIniFile par TMemIniFile, et là... Tout fonctionne comme par magie...
    Quelqu'un saurait pourquoi ça ne marche pas avec un TIniFile?
    Merci d'avance
    PS: je suis sous D7 Pro et le TiniFile a très bien marché jusqu'ici...
    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

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 84
    Points : 58
    Points
    58
    Par défaut ReadString(section,cle,'ERROR');
    :
    tente :

    ReadString(section,cle,'ERROR');

    en créant avant tes chaines "section" et "cle" histoire de bien voir ce k il y a dedans...

    a+

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 84
    Points : 58
    Points
    58
    Par défaut oups
    j'avais lu trop rapidement ton post
    sorry.

  4. #4
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Sauf erreur de ma part, TInifile est assez strict sur le format du fichier
    il s'emmêle les pinceaux notamment parceque tu as mis une ligne de commentaire dans ton fichier .ini

    ** Definition FIle **
    Essaye sans cette ligne et ça devrait fonctionner, sinon, l'erreur vient d'ailleurs !

  5. #5
    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
    Alors ça vient d'ailleurs parce que j'ai justement essayé de virer cette ligne (qui, soit dit en passant, n'a jamais posé problème jusque là)...
    Donc je ne sais vraiment pas ce qu'il se passe...

    Petite info: j'ai essayé d'ouvrir IniFiles.pas et lorsque j'essaie d'atteindre l'implémentation d'une méthode (Ctrl+Shift+Flèche bas) ben ça ne mène nulle part...
    Un coup d'oeil à l'inspecteur de classe me montre que les 2 TIniFIle dispos (un pour Win32 et l'autre pour les autres) ont tous leurs membres non renseignés (ils sont en gras)...
    Alors que mon projet compile très bien, que ce soit avec TIniFile ou TMemIniFIle...
    Moi je penche pour une attaque terroriste martienne...
    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

  6. #6
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Salut Pedro,

    après petits essais,

    dans Inifile := TiniFile.create(.......), mets le chemin complet de ton fichier .ini.

    Tinifile prend par défaut le chemin \WINDOWS (aide delphi )
    alors que TMemIniFile ne semble pas soumis à cette contrainte.


    une fois le chemin ok, la ligne "** Definition FIle **" n'a posé aucun problème.


    bonne continuation,

  7. #7
    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
    Merci de ton aide mais...
    Dans ces cas-là pourquoi seul le TIniFile ne fonctionne pas alors que le TMemIniFile marche très bien (en remplaçant uniquement TIniFile par TMemIniFile)??
    Quoi qu'il en soit ça ne vient pas de là puisque... je spécifie le chemin complet à chaque fois
    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

  8. #8
    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
    Personne n'a d'idée?
    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

  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
    Pourrais tu fournir un peu plus de code s'il te plait (c'est pour l'espionnage industriel) ?

    procedures, fonctions, déclarations de types et variables qui utilisent ton IniFile.

    sinon, juste après ton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      IniFile:=TInifile.create(UnNomFichier);
    écrit ça pour vérifier qu'il va chercher le fichier au bon endroit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowMessage(IniFile.FileName);
    Bidouilleuse Delphi

  10. #10
    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
    Ben rien que du très classique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
          ti:=TIniFile.Create(FileName);
          i:=0;
          s:=ti.ReadString('Materials','Material'+IntToStr(i),'');
          while s<>'' do
          begin
            //Je récupères les données dans s
            Inc(i);
            s:=ti.ReadString('Materials','Material'+IntToStr(i),'');
          end;
    Voila...
    Le truc, c'est que si le fichier est incorrect, on a normalement droit à un message d'errur. Or je n'en ai aucun... Si je debugge, je remarque qu'il ne rentre pas dans le while. Et pour cause! s est vide... Tout comme ti d'ailleurs
    [Edit]J'ai testé et c'est bien le bon fichier qui est spécifié...
    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

  11. #11
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    chez moi ton code avec le fichier que tu as donné fonctionnent bien....


    tu as essayé de créer une nouvelle application pour voir si çà fonctionne ?

  12. #12
    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

    Je me confonds en excuse: Le TIniFile marche si (et seulement si) je mets le chemin complet du fichier...
    Et donc, je me suis aperçu que la variable qui contenait le répertoire de travail ne s'initialisait pas au bon endroit (après que je m'en serve en fait ).
    Donc c'est bon...
    Seulement, comment se fait-il que le TMemIniFile ait marché lui?
    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

  13. #13
    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
    Tiens, prends ça, bien fait !

    Tu aurais du suivre mon second conseil plus tôt (le showmessage), comme ça tu aurais trouvé plus vite, na
    Bidouilleuse Delphi

Discussions similaires

  1. Problème de delete TIniFile
    Par sylvain.cool dans le forum C++Builder
    Réponses: 3
    Dernier message: 19/06/2008, 11h11
  2. Réponses: 3
    Dernier message: 29/06/2007, 17h18
  3. [Avis aux pros !] Problèmes de la VCL avec les threads
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/02/2006, 22h38
  4. [Delphi 6 XP][TIniFile] problème avec WriteString
    Par Redsky dans le forum Langage
    Réponses: 1
    Dernier message: 08/12/2005, 10h18
  5. problème Warning VCL inline
    Par andolini dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/04/2005, 15h09

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