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 :

Blocage de fichiers.


Sujet :

Langage Delphi

  1. #1
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut Blocage de fichiers.
    Bonjour,
    J'ai 2 applis qui dialoguent via des fichiers :
    l'appli. 1 les créée et l'appli. 2 les renomme, les lit et les détruit.
    Parfois j'ai une erreur car l'appli. 1 n'a pas fini de créer le fichier que l'appli. le renomme (ou du mopins essaye)!
    J'ai des solutions de contournement mais j'aurais aimé savoir si il n'y avait pas un indicateur au niveau du fichier qui informe de l'état 'pas encore fini d'être écrit'.
    Des idées ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    C'est un peu un contournement, mais tu peux jouer avec les File Attributes (via FileGetAttr et FileSetAttr).

    Par exemple, tu commences par créer un fichier caché que tu rends visible à la fin de la création seulement. L'autre appli doit alors attendre que le fichier soit visible pour pouvoir y accéder.

  3. #3
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Il suffit d'ouvrir le fichier en mode exclusif.
    Si tu arrive à l'ouvrir, c'est que le fichier n'est pas utilisé
    Si tu n'arrive pas à l'ouvrir, le fichier est utilisé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     var Handle : Integer ;
     Handle := FileOpen( f , fmShareExclusive ); 
     
     // Si le Handle est different de -1 le fichier est non-utilisé
     if (Handle <> -1) then                    
     begin
       FileClose(Handle) ;
       // TRAITEMENT
     end;
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Merci à tous les 2 pour vos réponses...elles correspondent aux 'contournement' déjà mis en place mais je me demandais si l'état du fichier n'était pas directement récupérable...

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Personnellement je ne créerais le fichier que lorsque j'ai terminé sa conception.
    Tstringlist ou même mieux FileStream.

    Actuellement J'utilise une base de données et je joue avec une table dans laquelle un champs boolean m'indique l'autorisation à l'autre poste d'exploité la table.

    Mais bon cela dépends de ce tu envoi.

    Il reste encore l'utilisation d'un thread qui attendrais l'autorisation...

    bye

  6. #6
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    Personnellement je ne créerais le fichier que lorsque j'ai terminé sa conception.
    Tstringlist ou même mieux FileStream.

    Actuellement J'utilise une base de données et je joue avec une table dans laquelle un champs boolean m'indique l'autorisation à l'autre poste d'exploité la table.

    Mais bon cela dépends de ce tu envoi.

    Il reste encore l'utilisation d'un thread qui attendrais l'autorisation...

    bye
    En fait c'est ce que je fais mais ce n'est pas suffisant : il y a des cas rares mais existants de collision.
    Pour les autres solutions évoquées ça ne correspond pas à mon application en effet les 2 applis doivent être totalement décorellées et même le mode de dialogue être adopté par des appli. tierces.

Discussions similaires

  1. [WD11] Problème de blocage de fichier
    Par slick42 dans le forum WinDev
    Réponses: 18
    Dernier message: 18/02/2019, 14h17
  2. [XL-2010] Blocage de fichier depuis COM.
    Par a028762 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2012, 15h04
  3. Probleme de blocage de fichier .htaccess
    Par _ChToM_ dans le forum Apache
    Réponses: 4
    Dernier message: 01/10/2008, 10h07
  4. Blocage de fichier/enregistrement
    Par chapeau_melon dans le forum WinDev
    Réponses: 1
    Dernier message: 15/02/2008, 00h33
  5. [c++ ]blocage de fichier
    Par srs dans le forum Windows
    Réponses: 8
    Dernier message: 19/09/2005, 15h06

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