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 :

Ouverture d'un fichier utilisé par une autre application


Sujet :

Delphi

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut Ouverture d'un fichier utilisé par une autre application
    Bonjour

    Je souhaite ouvrir un fichier de log généré par une application externe qui tourne en tache de fond. Lorsque je passe par un Tmemorystream.loadfromfile pour charger le fichier, windows affiche une erreur comme quoi le fichier est utilisé par un autre processus.

    Pourtant si j'ouvre le log avec notepad++ou le bloc note j'arrive bien à afficher le contenu du fichier sans problème.

    Comment puis je faire pour ouvrir mon fichier à partir d'une application delphi sans erreur? J'ai bien essayé avec un Tfilestream et en mettant des droits mais ça ne fonctionne pas mieux.

    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    J'aime la programmation avec Delphi
    Inscrit en
    Avril 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : J'aime la programmation avec Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 227
    Points : 132
    Points
    132
    Par défaut
    Peut être fmOpenRead = 0 = Lire only
    fmOpenWrite = 1 = écrire only
    fmOpenReadWrite = 2 = Lire et écrire (default)

  3. #3
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour,

    regarde ici, même si c'est un peu ancien :

    http://www.developpez.net/forums/d25...e-application/

    je ne sais pas si cela fonctionne bien avec les nouveaux systèmes d'exploitation.

    Il est bien dit que NotePad ne bloque pas un fichier qu'il ouvre

    A+

    Charly

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut
    Merci pour vos réponses.
    FileMode := fmOpenRead
    Ca ne fonctionne pas malheureusement, j'ai toujours mon erreur même en passant par un Textfile.

    regarde ici, même si c'est un peu ancien :

    http://www.developpez.net/forums/d25...e-application/

    je ne sais pas si cela fonctionne bien avec les nouveaux systèmes d'exploitation.

    Il est bien dit que NotePad ne bloque pas un fichier qu'il ouvre
    Le code de ce sujet sert à vérifier si un fichier est ouvert, ce n'est pas tout à fait ce que je recherche ou bien j'ai pas vu ce qu'il fallait

  5. #5
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Bonjour

    A mon avis, il faudrait utiliser la fonction API OpenFile avec OF_SHARE_DENY_NONE.
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu as dit avoir testé avec TFileStream
    l'équivalent de OF_SHARE_DENY_NONE c'est fmShareDenyNone dans le paramètre Mode du constructeur
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut
    Bon j'ai fini par trouver, ça marche en utilisant le Tfilestream mais de cette façon avec un OR :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stream := TFileStream.Create(nomfichier, fmOpenRead OR fmShareDenyNone);
    Problème résolu, merci

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Ça paraît étrange qu'un fichier ouvert en lecture seule le soit par défaut en mode exclusif De plus un Deny quelconque ne concerne pas l'accès actuel, mais les ouvertures futures (concurrentes)
    Sinon, quelques remarques sur les différents modes d'ouverture.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/06/2008, 01h30
  2. Tester si le fichier est utilisé par une autre appli
    Par sivaller dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 05/06/2008, 19h47
  3. Erreur "Fichier utilisé par un autre processus"
    Par solo3326 dans le forum Langage
    Réponses: 3
    Dernier message: 18/08/2005, 16h55
  4. Réponses: 7
    Dernier message: 23/03/2005, 22h23

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