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 :

Rechercher valeur dans fichier ini?


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut Rechercher valeur dans fichier ini?
    Bonsoir, je voudrais savoir s'il est possible de rechercher Une Partie d'une valeur de clé d'un fichier ini...
    Par exemple, je voudrais rechercher la date d'un jour : 03/02/2009
    Mais, mon fichier Ini est structuré de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonJour1 = 03/02/2009-Du Text
    Mon but est de savoir si oui la date existe déjà, et de retrouver le nom de la ligne...
    Peut être qu'il faudrait passer par un TMemo... Et copier uniquement le nombre de charactère commencant par la date... Est-ce possible.?

    Cordialement.

    Mathieu

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 522
    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 522
    Points : 25 052
    Points
    25 052
    Par défaut
    tu peux le faire avec le bon vieux TIniFile

    Tu fais un ReadSections, tu obtients, toutes les sections du fichier Ini, puis tu fais un ReadSectionValues, tu obtiens une liste Clé=Valeur, tu fais une boucle qui lit chaque valeur pour détecter une Date ... et puis voilà !

    tu peux le faire via une lecture de fichier via ReadLn mais tu peux choper des lignes du fichier qui sont en fait des commentaires ...

    tu peux le faire via une lecture de fichier par TFileStream, bon il est sur que cela sera le plus rapide, mais trouver le bon algo sera plus difficile, tu peux vite partir dans un code complexe et inutilement lent ...

    Par contre, ta solution de TMemo, je ne vois pas, me dit pas que c'est pour faire un Lines.LoadFromFile, car dans ce cas il existe la TStringList, ... même si je considère qu'utiliser une TStringList pour lire un fichier texte est une solution lourde en mémoire et pas très rapide ...
    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

  3. #3
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    En faite, je comprend ou tu veux en venir, mais physiquement j'ai du mal...

    Pourquoi faire un ReadSections puisque je connais le nom de la section ou est sensé être la date...
    Pour le ReadSectionValues je suis d'accord, mais il faut placer les resultat dans un tableau non??? et sa je sais pas trop faire...
    C'est pour sa que je pensais au TMemo, comme dans la FAQ

    http://delphi.developpez.com/faq/?pa...alclefssection

    Mais le souci est : Comment faire pour récuperer le nom de la clé qui contien la date en question???

    Merci !

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 522
    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 522
    Points : 25 052
    Points
    25 052
    Par défaut
    Je ne savais pas que connaissais la section, raison de plus pour ne pas passer un par TMemo ... l'algo pour ne prendre que les dates de la bonne section serait bien plus complexe que via un TIniFile ...

    Pourtant rien de plus simple, et ce n'est pas un tableau mais une liste, un code baclé pour D7

    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
    KeyList:= TStringList.Create();
    try
      SectionValues := TStringList.Create();
      try
        IniFile.ReadSectionValues('SECTION', SectionValues);
        for I := 0 to SectionValues.Count - 1 do
        begin
          if Pos(ADate, SectionValues.ValueFromIndex[I]) > 0 then
            KeyList.Add(SectionValues.Names[I]):
        end;
      finally
        SectionValues.Free();
      end;
     
      // Faire des trucs avec KeyList ...
    finally
      KeyList.Free();
    end;
    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

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Pourquoi stocker 2 données sur la même clé ? Tu pourrais créer une clé "MonJour1Date" contenant uniquement la date et une clé "MonJour1Texte" contenant la description supplémentaire...

  6. #6
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Oula...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KeyList:= TStringList.Create();
    Je met quoi entre les parentheses?

    Je pige pas tout... Merci de ton aide...

  7. #7
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Citation Envoyé par GoustiFruit Voir le message
    Pourquoi stocker 2 données sur la même clé ? Tu pourrais créer une clé "MonJour1Date" contenant uniquement la date et une clé "MonJour1Texte" contenant la description supplémentaire...
    Parce que j'aime bien quand c'est compliqué

    J'y avait pensé, mais dans mon type d'utilisation, c'est plus pratique de faire comme je fais ! (j'ai éssayé les deux méthodes)

    Merci de l'info quand même !

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 522
    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 522
    Points : 25 052
    Points
    25 052
    Par défaut
    Citation Envoyé par jojo86 Voir le message
    Parce que j'aime bien quand c'est compliqué
    Tu devrais commencer par ce qui est simple !

    Citation Envoyé par jojo86 Voir le message
    Oula...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KeyList:= TStringList.Create();
    Je met quoi entre les parentheses?


    là je peux plus rien, si tu ne connais pas les bases ... tu pourrais au moins voir l'aide pour te rendre compte, qu'il n'y a pas de paramètres à mettre, je mets les () systématiquement comme en Java pour la lisibilité du code, on sait tout de suite que c'est une fonction !

    Reprend donc les bases, comme la fonction Copy, Pos pour la manipulation de chaine, revoit aussi les classes indispensable à connaitre comme TStringList, tout ça est indispensable à connaitre avant de vouloir utiliser une classe avancé comme le TIniFile dont l'utilisation dépend d'un certain pré-requis minimum !
    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

  9. #9
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Je connais les bases... J'ai juste jamais été amené à utiliser TStringList j'vois pas ou est le probleme...

    Merci pour le sa fait tjrs plaisir...

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Citation Envoyé par jojo86 Voir le message
    Parce que j'aime bien quand c'est compliqué

    J'y avait pensé, mais dans mon type d'utilisation, c'est plus pratique de faire comme je fais ! (j'ai éssayé les deux méthodes)

    Merci de l'info quand même !
    En quoi c'est plus pratique ? Puisqu'en l'état tu ne sais pas récupérer tes données facilement ? En les séparant, tu t'embêteras beaucoup moins...

  11. #11
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 522
    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 522
    Points : 25 052
    Points
    25 052
    Par défaut
    Citation Envoyé par GoustiFruit Voir le message
    En quoi c'est plus pratique ? Puisqu'en l'état tu ne sais pas récupérer tes données facilement ? En les séparant, tu t'embêteras beaucoup moins...
    +1
    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

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

Discussions similaires

  1. recherche valeur dans un fichier extérieur
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/02/2009, 11h55
  2. Rechercher une valeur dans fichier Excel depuis VBA Access
    Par tribaleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 14h10
  3. Recherche adresse et valeur dans fichier fermé
    Par edelweisseric dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 31/05/2008, 21h44
  4. recherche valeur dans fichier fermé
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/02/2008, 12h06
  5. Tiles et recherche de valeurs dans fichier properties
    Par coyote999 dans le forum Struts 1
    Réponses: 2
    Dernier message: 05/04/2007, 11h52

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