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 :

[D6] Recherche d'une valeur dans un fichier


Sujet :

Langage Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut [D6] Recherche d'une valeur dans un fichier
    Je cherche a créer une fonction de recherche d'une valeur donnée dans un fichier.
    La fonction suivante renvoie vrai dans tout les cas.
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
          function RechercheInFic(const szFic, szValeur: String): Boolean;
          var
             Fichier: THandleStream;
             Buffer: ArrayChar;
             szBuf: String;
             FileHandle: Cardinal;
             nTaille, nIndex: Integer;
          begin
             Result := False;
             Fichier := nil;
             FileHandle := CreateFile(PChar(szFic), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
             if FileHandle = INVALID_HANDLE_VALUE then
                Exit;
     
             //.Lecture du fichier.
             try
                Fichier := THandleStream.Create(FileHandle);
                nIndex := 0;      nTaille := Fichier.Size;
                while(nIndex < nTaille) and (not Result) do
                begin
                   //.Lecture. 
                   if(nTaille - nIndex) < Length(Buffer) then
                      Fichier.Read(Buffer, (nTaille - nIndex))
                   else
                      Fichier.Read(Buffer, Length(Buffer));
                   szBuf := Buffer;
     
                   //.Recherche.
                   if Pos(AnsiLowerCase(szValeur), AnsiLowerCase(szBuf)) > 0 then   // <<-----
                      Result := True      //.Valeur trouvée.
                   else
                   begin
                      //.Déplacement du curseur.
                      Fichier.Seek(soFromCurrent, - Length(szValeur));
                      Inc(nIndex, Length(Buffer) - Length(szValeur));
                   end;
                end;
             finally
                Fichier.Free;
                CloseHandle(FileHandle);
             end;
          end;
    Je ne vois vraiment pas, où est l'erreur.
    Si quelqu'un pouvait m'éclairer ... ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Elle marche bien cette fonction
    J'ai juste remplacé dans la partie Var le ArrayChar en Array [0..255] of Char.

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par portu
    Elle marche bien cette fonction
    Bon, ca doit être la façon dont j'y fais appel qui doit être à revoir.

    Citation Envoyé par portu
    J'ai juste remplacé dans la partie Var le ArrayChar en Array [0..255] of Char.
    Oui : j'ai oublié de le préciser.

    Merci, de t'être penché sur mon problème.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

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

Discussions similaires

  1. [WD11] recherche d'une valeur dans un fichier HF
    Par hanitax dans le forum WinDev
    Réponses: 5
    Dernier message: 06/01/2012, 18h25
  2. [WD11] Recherche une valeur dans un fichier
    Par hanitax dans le forum WinDev
    Réponses: 3
    Dernier message: 29/12/2011, 16h12
  3. Réponses: 24
    Dernier message: 23/12/2011, 16h20
  4. Réponses: 3
    Dernier message: 01/05/2011, 21h42
  5. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 11h24

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