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

Langage Delphi Discussion :

Utilisation de IniFiles


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut Utilisation de IniFiles
    Bonjour,

    Les fichiers INI créés par INiFiles possedent-ils une taille maxi ou une limite au nombre de sections ou de labels ?

    Je crée un fichier ini d'une taille importante puisque j'y inscrit tous les caption et messages d'une application pour pouvoir par la suite les traduire dans une autre langue.

    J'ai créé 11 sections qui comportent en moyenne 5 labels et je ne peux plus ajouter une nouvelle section sans pour autant qu'il me signale une erreur !

    Quelqu'un peut-il m'expliquer pourquoi ?

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    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 563
    Points : 25 165
    Points
    25 165
    Par défaut
    Même système pour les multi-langues des applications que je maintiens, un fichier de 216Ko et 89 Sections réparti en 7472 lignes semble être le record actuel ... et pas de problème relevé !

    Idée conne, la section n'existerait pas déjà ? il est insensible à la casse, et le fichier ini n'aime pas les caractères entre 0 et 31 autre que 9, 10, 13 ...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      if not ScreenVar_TEXT_INI.SectionExists('Customer') then
      begin
        ScreenVar_PARAMS_INI.WriteString('Customer','Title',ScreenVar_TEXT[91]);
        ScreenVar_PARAMS_INI.WriteString('Customer','Abort',ScreenVar_TEXT[92]);
      end;
    Voila ce qu'il refuse de prendre ! C'est la douzième section et aucune autre de même nom n'a été déclarée !

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 871
    Points : 11 361
    Points
    11 361
    Billets dans le blog
    6
    Par défaut
    il vérifie dans un ini si la section existe, sinon il l'écrit dans un autre : c'est bien ça ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut
    Oui

  6. #6
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Bonjour

    Quel message reçois-tu ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut
    Dans ma première description de mon problème j'avais ptécisé :
    sans pour autant qu'il me signale une erreur !

    Curieux ! Si j'ajoute des labels dans les sections existantes cela marche ! en receéant le fichier INI bien entendu. Mais la section "Customer" ne fonctionne pas même en cas de nouvelle création du fichier sans qu'aucune erreur ne s'affiche...

  8. #8
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Autant pour moi pour la question du message. Si j'ai un peu de temps cet après midi je vais faire des essais. J'utilise aussi les fichiers .INI à multi sections, mais je n'en ai pas autant. Je vais en créer.

    En revanche pour les multilangages je suis passé par une table. Cela me paraît (???) plus souple. Mais c'est mon idée.

  9. #9
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Juste une petite vérification. C'est peut être idiot mais comme j'ai eu un pb avec celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if not ScreenVar_TEXT_INI.SectionExists('Customer') then
      begin
        ScreenVar_PARAMS_INI.WriteString('Customer','Title',ScreenVar_TEXT[91]);
        ScreenVar_PARAMS_INI.WriteString('Customer','Abort',ScreenVar_TEXT[92]);
      end;
    ScreenVar_TEXT[91] et ScreenVar_TEXT[92] sont bien renseignés ?

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut
    Oui bien sur c'est la première chose que j'ai vérifié. C'est d'autant plus sur que j'ai ajouté du texte après le 92ème et j'ai pu l'enregistrer dans des sections déjà existantes.
    C'est à n'y rien comprendre. Cela donne l'impression que "Customer" serait un mot réservé des fichiers INI

  11. #11
    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
    Citation Envoyé par colorid
    Je crée un fichier ini d'une taille importante
    tu semble utiliser plusieurs objet IniFile sur un même fichier...Non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if not ScreenVar_TEXT_INI.SectionExists('Customer') then
      begin
        ScreenVar_PARAMS_INI.WriteString('Customer','Title',ScreenVar_TEXT[91]);
        ScreenVar_PARAMS_INI.WriteString('Customer','Abort',ScreenVar_TEXT[92]);
      end;
    personnellement, ca me semble la source du problème non?

    peut-être que la section 'Customer' existe bien dans le fichier ini
    ScreenVar_TEXT_INI? Donc aucune enregistrement de 91 et 92?
    as-tu essayé de mettre un message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if not ScreenVar_TEXT_INI.SectionExists('Customer') then
      begin
        ScreenVar_PARAMS_INI.WriteString('Customer','Title',ScreenVar_TEXT[91]);
        ScreenVar_PARAMS_INI.WriteString('Customer','Abort',ScreenVar_TEXT[92]);
      end
      else
      begin
        messageBox( handle,'oups','Section existe!?!',mb_Ok);
      end;
    Bon ça me semble bizard un bug de se genre dans les .ini....

  12. #12
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Voilà j'ai fait deux essais.

    En premier j'ai créé un fichier INI avec 18 sections différentes. Appelons le ORIG. Dans ce fichier la section 'Customer' n'existait pas

    Puis, j'ai fait la création d'un autre fichier Ini (appelons le INI : bé tiens) où j'ai créé aussi 18 sections et en testant si Custumer existait. Dans INI résultat j'ai la section Customer et mes autres sections. Normal

    J'efface INI, je rajoute la section Customer dans ORIG et je relance. Dans INI je n'ai pas Customer. En revanche j'ai toutes les autres sections. Normal aussi.

    Envoyé par Eric BoisVert :
    peut-être que la section 'Customer' existe bien dans le fichier ini
    A ce stade, cette remarque me paraît pleine de bon sens. Et ce n'est pas le mot Customer qui provoque le problème.

    Je reste à l'écoute.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut
    Ok c'est de plus en plus mystérieux !!!

    Je viens de réessayer mes sources en supprimant le fichier INI et donc en le recréant je n'ai toujours pas de section "Customer" créée alors que toutes les autres le sont

    Je puis te certifier que je n'utilise pas plusieurs IniFile sur le même fichier, car je n'ai pas d'autres fichiers ini dans l'appli et l'objet IniFile est déclaré en variable générale.

    Je suis très pris jusqu'à demain après midi mais promis je reviens sur le forum pour ce problème demain soir ! Il n'y a aucune raison de ne pas trouver ce qu'il se passe !

    Encore merci pour les essais et leur compte rendu

    A+ j'espère

  14. #14
    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
    Citation Envoyé par colorid Voir le message
    Je puis te certifier que je n'utilise pas plusieurs IniFile sur le même fichier, car je n'ai pas d'autres fichiers ini dans l'appli et l'objet IniFile est déclaré en variable générale.
    et bien ici...je vois bien 2 TIniFile non:
    ScreenVar_TEXT_INI et ScreenVar_PARAMS_INI

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if not ScreenVar_TEXT_INI.SectionExists('Customer') then
      begin
        //== Faudrait bien s'avoir si on passe ici??? ==
        ScreenVar_PARAMS_INI.WriteString('Customer','Title',ScreenVar_TEXT[91]);
        ScreenVar_PARAMS_INI.WriteString('Customer','Abort',ScreenVar_TEXT[92]);
        //== Et si on NE passe PAS ici... c'est que Customer existe non?==
      end;

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut
    Très Très bonne question !
    Je n'y avais pas pensé car le ScreenVar_PARAMS_INI n'est utilisé que lors de la première exécution de l'application pour initialiser des données dans une BD Interbase alors que le ScreenVar_TEXT_INI est utilisé par toute l'application puisque ce sont les captions des composants, etc.. Il est maintenat certain que c'est lui qui est responsable car je viens de lire le fichier ScreenVar_PARAMS_INI et la section "Customer" s'y trouve en effet et les labels que j'ai créé s'y trouvent lesquels étaient pourtant destinés à l'autre fichier ScreenVar_TEXT_INI !

    Comme quoi rien ne se perd tout se transforme !

    Bravo et mille fois merci, je corrigerai le source des demain après midi.

    Tu viens de faire une magnifique démo de l'utilité du forum !

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/05/2008, 09h29
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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