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 :

[D7] Lire un fichier en cours d'utilisation


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut [D7] Lire un fichier en cours d'utilisation
    Bonjour,

    Je cherche à ouvrir un fichier afin de rechercher une chaîne dedans. Cependant, j'ai deux problèmes :

    - Le fichier peut être déjà en cours d'utilisation. Si c'est le cas, il m'est impossible d'ouvrir le fichier sans tuer le processus qui l'occupe. Est-il possible de l'ouvrir sans tuer le processus ?
    - Le fichier peut contenir du code spécial (comme &€Ahµt¶‘ÁÎäM…<E¶Û&|YØ`#à©ÉQ9.û²) qui n'est pas pris en charge par un TStringList. Comment faire pour qu'il soit pris en compte ?

    Merci d'avance,
    bibi26

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 670
    Détails du profil
    Informations personnelles :
    Âge : 44
    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 670
    Points : 7 032
    Points
    7 032
    Par défaut
    Citation Envoyé par bibi26
    Bonjour,

    Je cherche à ouvrir un fichier afin de rechercher une chaîne dedans. Cependant, j'ai deux problèmes :

    - Le fichier peut être déjà en cours d'utilisation. Si c'est le cas, il m'est impossible d'ouvrir le fichier sans tuer le processus qui l'occupe. Est-il possible de l'ouvrir sans tuer le processus ?
    Si le fichier n'est pas ouvert en mode exclusif, peut-être.
    J'ai trouvé ça pour le vérifier (pas testé) :
    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
    function FichierDejaUtilise(AFile:string):Boolean; 
    var 
      h: Thandle; 
    begin 
      Result:=False; 
      h:=CreateFile(PChar(AFile), 
                    GENERIC_WRITE, 
                    FILE_SHARE_WRITE, 
                    nil, 
                    OPEN_EXISTING, 
                    FILE_ATTRIBUTE_NORMAL, 
                    0); 
      if h = INVALID_HANDLE_VALUE then 
        begin 
          Result:=True; 
        end; 
     
      CloseHandle(h); 
    end;
    C'est peut-être une piste ...

  3. #3
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Je dirais comme Lung que tout dépend de l'autre processus.

    Si l'autre processus ouvre le fichier en mode exclusif, et que tu n'as pas accès au code source de cet autre processus, il n'y a pas de solution, malheureusement.

    Pour l'autre problème, je dirais que le TStringList est tout bonnement inadapté. Il faut utiliser une autre approche, mais faute de plus d'information, impossible de t'aider.

  4. #4
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Bha utilise un simple TFileStream ...
    A la creation il y a 2 parametres a saisir en plus du nom de fichier : le mode d'ouverture (creation, lecture, ecriture, ...) et le mode de partage (exclusif, etc ...)

    Si effectuvement l'autre processus ne l'a pas ouvert en mode exclusif tu peux tout a fait l'ouvrir une 2e fois via un TFileStream.

Discussions similaires

  1. Lire un fichier de donnée en utilisant des variables
    Par mehdichess74 dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/04/2008, 11h48
  2. Samba / fichier en cours d'utilisation
    Par dycobe dans le forum Réseau
    Réponses: 2
    Dernier message: 05/03/2008, 09h19
  3. [DOM] Fichier en cours d'utilisation - Suppression impossible
    Par schniouf dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 15/12/2006, 13h58
  4. Fichier en cours d'utilisation
    Par kendras dans le forum C
    Réponses: 9
    Dernier message: 29/11/2006, 11h45
  5. [VB.NET] Comment acceder au fichier en cours d'utilisation ?
    Par Aspic dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/02/2006, 16h40

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