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 :

Detecter si un Fichier est deja ouvert [Non suivi]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 59
    Par d�faut Detecter si un Fichier est deja ouvert
    Bonjours, je voudrait detecter au moment ou un utilisateur ouvre un fichier si celui-ci est deja ouvert ou non par un autre utilisateur ...

    Merci d'avance
    Derain Didier

  2. #2
    R�dacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par d�faut
    Bonjour,

    Par quel moyen ce fichier va-t-il �tre ouvert ?

    Il est en g�n�ral possible de sp�cifier qu'on veut ouvrir un fichier en Exclusif. Si l'ouverture �choue, c'est donc qu'une autre application a d�j� ouvert le fichier.

    Cordialement,

    Arnaud

  3. #3
    Membre �clair�

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 59
    Par d�faut
    C'est un fichier Texte tous simple qui est sur un srv le l'ouvre par la methode
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ExpList1->LoadFromFile(file);

  4. #4
    R�dacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par d�faut
    Tu peux envisager de faire plut�t quelque chose comme ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TFileStream * fsFile = NULL;
    try
    {
      fsFile = new TFileStream(file, fmOpenRead | fmShareExclusive);
      ExpList1->Items->LoadFromStream(fsFile);
    }
    __finally
    {
      ShowMessage("Impossible d'ouvrir le fichier. Un autre utilisateur a peut être  ouvert ce fichier");
      delete fsFile;
    }

  5. #5
    Membre �clair�

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 59
    Par d�faut
    Bien tenter mais........ Non.

    1/ on ne peut pas lire
    ExpList1->Items->LoadFromStream(fsFile);
    car fsFile n'est pas un ansiStriing

    2/ et si je remplace par file il me dit que le fichier et deja utiliser....

    je vais encore chercher ...

  6. #6
    R�dacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par d�faut
    Depuis quand LoadFromStream prend un AnsiString en param�tre ?

    Bon j'ai pas Builder au boulot, �a aide pas pour proposer un truc correct, je regarderai �a ce soir.

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    28
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 28
    Par d�faut
    Bonjour,

    effectivement LoadfromStream prend bien un TStream en param�tre...

    Par contre le constructeur de TFileStream prend bien un AnsiString comme premier param�tre. (dans notre cas c'est la variable file).

    Quoi qu'il en soit, je viens de le tester, cela ne fonctionne que si le fichier est d�j� ouvert par l'application elle-m�me (dans un autre TFileStream par exemple)

    Je cherche un autre moyen...

  8. #8
    R�dacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par d�faut
    Bonjoru,

    Normallement, un fichier d�j� ouvert ne devrait pas pouvoir �tre r�ouvert avec fmShareExclusive...

    J'ai du mal � voir en quoi cela ne r�pond pas au besoin...
    Peux-tu donner le comportement exact souhait�, et ce que fais le code ci-dessus ?

    Arnaud

  9. #9
    R�dacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par d�faut
    Bon d�j� j'ai bien rat� mon code. Ca m'apprendra.

    Voil� un code qui fonctionne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
       TFileStream * fsFile = NULL;
       try
       {
          fsFile = new TFileStream(file, fmOpenRead | fmShareExclusive);
          ListBox1->Items->LoadFromStream(fsFile);
       }
       catch(EFOpenError &e)
       {
          ShowMessage("Impossible d'ouvrir le fichier. Un autre utilisateur a peut être  ouvert ce fichier");
       }
       delete fsFile;
    Cependant, si une application ouvre le fichier, mais le rel�che ensuite, il est impossible de savoir que le fichier a �t� ouvert...

Discussions similaires

  1. Methode pour savoir si un fichier est deja ouvert par un autre process
    Par gilles06 dans le forum G�n�ral Python
    R�ponses: 7
    Dernier message: 06/05/2014, 09h34
  2. Ouvrir un fichier EXTERNE si l'applic est deja ouverte
    Par srame dans le forum Macros et VBA Excel
    R�ponses: 5
    Dernier message: 14/12/2007, 12h34
  3. [C# V1.1]Detecter si un fichier est deja ouvert ou pas !
    Par ChristopheOce dans le forum Windows Forms
    R�ponses: 3
    Dernier message: 25/10/2006, 09h54
  4. Comment savoir si une connexion est deja ouverte?
    Par ghor_bey dans le forum Web & r�seau
    R�ponses: 3
    Dernier message: 29/07/2005, 15h17

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