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 :

[Thread fichier] scruter un fichier et détecter les modifications


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut [Thread fichier] scruter un fichier et détecter les modifications
    bonjours, j'essaye de faire un composant qui permet de scruter un fichier , stocker le contenu du fichier ,et verifier en permanence si il y a un changement.

    le probleme c'est que quand j'ouvre avec un notepad et je modifie le fichier , je tombe dans un problème d'acces . comment remédier à ce problème ??
    merci .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure TObjThreadScan.Execute;
    begin
      while not terminated do
      begin
        Scann(FPathDir);
      end;
    end;

    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
     
    procedure TObjThreadScan.Scann(Chemin : String);
    Var
      Info   : TSearchRec;
    begin
      Chemin := IncludeTrailingPathDelimiter(Chemin);
      If FindFirst(Chemin+'*.*',faAnyFile,Info)=0 Then
      Begin
        Repeat
          If Not((Info.Attr And faDirectory)=0)
            Then // repertoire
            Else
            begin
             /// Sleep(100);
              LoadFile(chemin+ Info.FindData.cFileName)  //fichier
            end;
        Until FindNext(Info)<>0;
        FindClose(Info);
      End;
    end;

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Bonjour,

    Peut-être que plutôt que d'ouvrir un fichier qui est potentiellement locké par une autre appli tu devrais le recopier auparavant et ouvrir la copie.

    Ou alors ouvre le avec un tmemorystream.LoadFromFile



    a voir

  3. #3
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    ah , je vais essayer cela , mais pour le cas de fichier de grande taille , cela va prendre un temps considérable ...

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    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 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Voir le Sujet "Comment détecter la copie d'un fichier ?"

    Tu devrais regarder autour de FindFirstChangeNotification qui te permettra (dans un thread) d'attendre une sorte d'évènement (pas à la notion delphi), soit qu'il ne se passe rien (TimeOut), soit qu'un fichier a été modifié

    Pour voir la copie d'un fichier, je pense qu'il faut écoute les messages de modification, ajouter le fichier dans une liste (si il existait déjà c'est que une modification, sinon c'est une copie d'un nouveau fichier, tu peux générer la liste au démarrage de l'application avec FindFirst/FindNext) ... et dès que le message TimeOut survient c'est que la copie est terminée ... tu peux aussi vérifier la taille du fichier voir ICI mes classs TNotifyShaiFileChangeThread et TFileSizeList, qui pourrait t'inspirer à ce sujet

    Cela vérifie la Taille, mais tu peux aussi tester la Date de Modification du fichier AVANT de lire le fichier

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour, je pense que tu trouveras ton bonheur en regardant les sources de Non40 ici et .

  6. #6
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    je vais essayer cela , mais si ma mémoire est bonne , je crois que j'ai essayé cet objet FindFirstChangeNotification ,mais je crois que les notifications ne marchent pas en réseaux ????

Discussions similaires

  1. Détecter les modifications faites dans une zone de texte avec la souris
    Par nosferapti dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 24/09/2009, 09h48
  2. Détecter les modifications sur une base de données
    Par abdelhamidem dans le forum Débuter
    Réponses: 7
    Dernier message: 09/02/2009, 18h16
  3. VB.Net - Comment détecter les modifications dans un Datagridview
    Par novice123 dans le forum Windows Forms
    Réponses: 17
    Dernier message: 19/12/2008, 16h57
  4. Réponses: 15
    Dernier message: 28/11/2008, 17h57
  5. Commet détecter les modifications d'un répertoire
    Par czgxp dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 26/06/2008, 14h37

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