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

C++Builder Discussion :

Probl�me de fichier [FAQ]


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 24
    Par d�faut Probl�me de fichier
    Salut!!

    J'ai une FileListBox et j'aimerai supprimer dans la FileListBox les fichiers supr�rieur a 30 000 octets.

    Le trie ne s'effectue pas correctement ou selon les cas ca passe et d'autres non.

    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
     
    FileListBox2->ApplyFilePath("D:\\test");
    FileListBox2->Update();
     
    AnsiString fichier;
    AnsiString fichier2;
    AnsiString test;
    for (int i = 0; i < FileListBox2->Items->Count; i++)
    {fichier=FileListBox2->Items->Strings[i];
    fichier2="D:\\test\\"+fichier;
    int FichierHandle = FileOpen(fichier2, fmOpenRead);
     
    test=FormatFloat("", FileSeek(FichierHandle, 0, 2));
     
    if (test>30000) 
    {FileListBox2->Items->Delete(i);}
    FileClose(FichierHandle);

  2. #2
    Membre �m�rite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par d�faut
    Hello

    FileSeek renvoie un entier. D�clares donc ta variable test sous forme de int plutot que d'AnsiString. Du coup, tu n'as plus besoin du FormatFloat.
    Ca devrait arranger tes affaires. Comparer des valeurs num�riques en passant par des chaines, �a ne donne pas forc�ment le m�me r�sultat.

    A++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 24
    Par d�faut
    Merci, mais ca n'arrange pas le probl�me, il reste des fichiers sup�rieur a 300 octet et des fichier inf�rieur a 300 octets qui ne s'affiche pas.

    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
     
    AnsiString fichier;
    AnsiString fichier2;
    int test;
    for (int i = 0; i < FileListBox2->Items->Count; i++)
    {
    fichier=FileListBox2->Items->Strings[i];
    fichier2="D:\\test\\"+fichier;
    int FichierHandle = FileOpen(fichier2, fmOpenRead);
     
    test=FileSeek(FichierHandle, 0, 2);
     
     
            if (test>300)  
            {
            FileListBox2->Items->Delete(i);
            }
    FileClose(FichierHandle);
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 24
    Par d�faut
    J'ai �galement test� ca, pareil :/

    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
     
    AnsiString fichier;
    AnsiString fichier2;
     
    for (int i = 0; i < FileListBox2->Items->Count; i++)
    {
    fichier=FileListBox2->Items->Strings[i];
    fichier2="D:\\test\\"+fichier;
     
      HANDLE hdl = CreateFile(fichier2.c_str(),  GENERIC_READ|GENERIC_WRITE,
      0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     
      int nb = GetFileSize(hdl, NULL);
     
          if (nb>300)
            {
            FileListBox2->Items->Delete(i);
            }
     
      CloseHandle(hdl);

  5. #5
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Pourquoi n'utilises tu pas les possibilit�s de Tsearchrec ? Tu as la possibilit� de conna�tre la taille des fichiers plut�t que d'ouvrrir le fichier pour en conna�tre la longueur.
    Ceci dit, je ne connais pas TFileListBox
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 24
    Par d�faut
    Je connais pas, est ce que c'est ca ?

    FindFirst("c:\\Program Files\\bcb6\\bin\\*.*", faAnyFile, SearchRec);
    test=IntToStr(SearchRec.Size) ;

    La c'est juste pour le 1er fichier ? Ensuite pour les autres fichier ??

  7. #7
    Membre �m�rite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par d�faut
    Hello

    Une remarque sur ta boucle for: quand tu fais un delete(i), l'�l�ment est supprim�, les suivants se d�calent pour remplir le vide, puis i est incr�ment�. R�sultat, l'�l�ment qui a pris la place de l'�l�ment supprim� n'est pas trait�, si je ne m'abuse.
    A essayer: Parcours tes items � rebours
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    for (int i = FileListBox2->Items->Count-1; i >= 0; i--)
      {...

  8. #8
    Membre �m�rite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 24
    Par d�faut
    Citation Envoy� par totoche76
    Hello

    Une remarque sur ta boucle for: quand tu fais un delete(i), l'�l�ment est supprim�, les suivants se d�calent pour remplir le vide, puis i est incr�ment�. R�sultat, l'�l�ment qui a pris la place de l'�l�ment supprim� n'est pas trait�, si je ne m'abuse.
    A essayer: Parcours tes items � rebours
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    for (int i = FileListBox2->Items->Count-1; i >= 0; i--)
      {...
    Je pense aussi que l'erreur vient de la, parcourire les items � rebours, c'est � dire ?

  10. #10
    Membre �m�rite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par d�faut
    Code:
    for (int i = FileListBox2->Items->Count-1; i >= 0; i--)
    {...


    Je pense aussi que l'erreur vient de la, parcourire les items � rebours, c'est � dire ?
    parcourir en partant du dernier dans la liste pour arriver au premier. cf le bout de code.

    A++

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 24
    Par d�faut
    Merci je vais tester ca, j'avais pas remarqu�

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 24
    Par d�faut
    Merci ca marche

    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
     
     
    AnsiString fichier;
    AnsiString fichier2;
    int test;
    for (int i = FileListBox2->Items->Count-1; i >= 0; i--)
    {
    fichier=FileListBox2->Items->Strings[i];
    fichier2="D:\\test\\"+fichier;
    int FichierHandle = FileOpen(fichier2, fmOpenRead);
     
    test=FileSeek(FichierHandle, 0, 2);
     
     
            if (test>300)
            {
            FileListBox2->Items->Delete(i);
            }
    FileClose(FichierHandle);
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 28/06/2005, 18h11
  2. [Servlet] Probl�me �criture fichier
    Par hedgehog dans le forum Servlets/JSP
    R�ponses: 4
    Dernier message: 23/05/2005, 15h17
  3. Probl�me lecture fichier en C++
    Par cali1983 dans le forum C++
    R�ponses: 17
    Dernier message: 20/05/2005, 09h36
  4. Probl�me ouverture fichier par double clic...
    Par sankookai dans le forum MFC
    R�ponses: 4
    Dernier message: 11/05/2005, 09h13
  5. Probl�me avec fichier texte
    Par jpdelx dans le forum ASP
    R�ponses: 7
    Dernier message: 13/11/2003, 13h17

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