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 :

Optimisation des fichier INI


Sujet :

Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 41
    Par défaut Optimisation des fichier INI
    Bonjour,

    voila, comme j'en ai marre à chaque fois que je fais une nouvelle application de réécrire complètement la lecture et sauvegarde du .INI de mon appli, je me suis dit que quelqu'un avait peut-être déjà écrit une classe (ou au moins une unité) qui serait capable de construire et lire un .INI en mettant les informations dans un tableau.
    L'avantage que je vois c'est que quand on veut ajouter un nouveau paramètre, il n'y a qu'a mettre le tableau des parametres à jour (et éventuellement une structure selon la solution de codage...)

    La question est-elle claire? Non? Bon , eh bien par exemple je voudrais faire un truc du genre:
    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
    type TInitStruct= record // Ca c'est les données que je veux sauver/lire
      WHeight,WWidth:integer;
      WXPos,WYPos:integer;
      WMaximized:boolean;
     
      end;
     
    Type TSaveParam= record // exemple d'idée, mais à compléter
      InfoIndex:integer;
      SectionId:integer;
      VarName:string;
    ??? que sais-je d autre??
      end;
     
    const   // La c'est les sections de mon .INI
        sectionWindow=0;
        FirstSection=sectionWindow;
        LastSection=sectionWindow;
     
    const sections : Array [FirstSection..LastSection] of string=('Window');
     
    const // La c'est mes parametres définis dans un joli tableau .INI
      TSaveParams:Array [0..4] of TSaveParam =
      (
      ( InfoIndex : $00 ; SectionId : sectionWindow; VarName : 'WMaximized' ; ),
      ( InfoIndex : $01 ; SectionId : sectionWindow; VarName : 'WHeight' ; ),
      ( InfoIndex : $02 ; SectionId : sectionWindow; VarName : 'WWidth' ; ),
      ( InfoIndex : $03 ; SectionId : sectionWindow; VarName : 'WXPos' ; ),
      ( InfoIndex : $04 ; SectionId : sectionWindow; VarName : 'WYPos' ; )
     
      );
    Dans ce code, évidemment seul le type de structure TSaveParam est constant d'un projet à l'autre, tous le reste est à redéfinir pour chaque projet.
    Ensuite pour mettre un nouveau parametre il suffit de l'ajouter à TInitStruct, TSaveParams.
    Pour une nouvelle section, on ajoute un élément à sections
    ?

    Je n'ai pas réussi à mettre ça en place car il faudrait par exemple ajouter un pointeur vers le champ qui va bien dans les parametres de TSaveParam, mais delphi me dit qu'il attend une constante...
    Pour ce que j'ai déjà fait en C, il me semble qu'un pointeur vers un champ d'une variable de type struct est une constante, mais apparemment pas en pascal (euh je voulais ma connaissance du pascal )...
    Merci pour vos idées... ou solutions

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Salut,

    J'ai fais un début de gestion dans ce sens, ca me suffisait à l'époque et je n'ai jamais continué, mais c'est opérationnel. tu peux essayer et l'utiliser si ca te convient.

    En gros!
    SLVars est l'unité principale de gestion des variables
    MesVars est l'unité qui déclare les variables persistentes dans un ini
    (il y a autant de fichier ini que de var de type TSLVars...)
    et la form "config" est un exemple d'utilisation de fenetre de config.

    Tout ca est au strict minimum, (->nouveau projet puis utilisation de SLVars)...

    Par contre, SLVars peut être complété au fur et à mesure des natures de données que tu utilises (voir les fonctions de sauvegarde et chargement des données...).
    De plus, la propriété "BPersistent" n'est pas utilisée je crois...

    pour ajouter une variable au .ini,
    1. la déclarer dans MesVar selon le modèle
    2. poser un compo, du même nom sur la fiche config,
    3. c'est tout, le reste est fait tout seul.

    4. pour récupérer une valeur sans ouvrir la fiche config, voir Button2 de la fiche principale...

    bon code
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 41
    Par défaut
    eumf....

    Il manque l'unité variants.dcu... c'est à toi ou j'ai raté un truc?

  4. #4
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    t'as raté un truc... ?

    variants est une unité Delphi.

    à moins que tu ais une vieille version de Delphi, variants est livré en standard il me semble... (pour ma part je suis sur d7pro)
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 41
    Par défaut
    Je m'en doutais...
    De toutes façon ton prog est trop lourd pour ce que je veux faire...
    Je vais continuer à fureter dans mon coin pour trouver une solution élégante.

    Merci qd même.

    Sinon y-a-t-il moyen de pointer dans un tableau constant vers des champ d'une structure?

  6. #6
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Citation Envoyé par Masterglob
    Je m'en doutais...
    tu te doutais de quoi ?

    Citation Envoyé par Masterglob
    De toutes façon ton prog est trop lourd pour ce que je veux faire...
    Je vais continuer à fureter dans mon coin pour trouver une solution élégante.
    Bah, si t'as pas essayé... il faut considérer l'unité SLVars comme une boite noire. les 2 autres unités s'en servant sont on ne peut plus simple il me semble...

    Citation Envoyé par Masterglob
    Sinon y-a-t-il moyen de pointer dans un tableau constant vers des champ d'une structure?
    je ne crois pas. Il me semble que les constantes C et Pascal ne sont pas faites de la même manière sur ce coup... Mais je dis peut être une grosse anerie
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 41
    Par défaut
    Je me doutais pour la version de delphi, et mon PC est trop à la rue pour changer de version...

  8. #8
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Citation Envoyé par Masterglob
    Je me doutais pour la version de delphi, et mon PC est trop à la rue pour changer de version...
    L'unité Variants existe depuis Delphi 2 Et ça m'étonnerait beaucoup que tu aies D1, ça fait plus de dix ans que c'est obsolète
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 41
    Par défaut
    euh si....

    Mais non je rigole, j'ai delphi 5

    Je vais regarder comment j'ai raté ça...

  10. #10
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    pour ton besoin as-tu regardé dans la JVCL ?

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

Discussions similaires

  1. Premier pas avec net : gestion des fichiers ini
    Par fredppp dans le forum VC++ .NET
    Réponses: 6
    Dernier message: 30/03/2007, 11h24
  2. [VC++] creer, ecrire et lire dans des fichiers .ini
    Par ksoft dans le forum Visual C++
    Réponses: 11
    Dernier message: 06/09/2006, 10h18
  3. manipulation des fichiers .ini
    Par chmaichel dans le forum Delphi
    Réponses: 8
    Dernier message: 21/07/2006, 15h25
  4. Lecture des fichiers INI
    Par jamfr73 dans le forum Linux
    Réponses: 2
    Dernier message: 13/04/2006, 01h03
  5. [VB.NET] Classe qui pilote des Fichier .INI
    Par sygale dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2004, 20h04

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