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 .NET Discussion :

Problème TFilestream dans BDS 2006


Sujet :

Delphi .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Par défaut Problème TFilestream dans BDS 2006
    Bonjour,

    Le programme ci-après réagit différemment selon qu'il est compilé avec Delphi7
    ou avec BDS.2006 VCL.NET.

    a) Compilation avec Delphi7
    La seconde tentative d'ouverture de fichier provoque le message:
    "Impossible d'ouvrir le fichier....car ce fichier est utilisé par un autre
    utilisateur..
    C'est normal, c'est le but recherché.

    b) Compilation avec BDS.2006 VCL.NET
    Dans ce cas, les deux ouvertures successives du fichier ne provoquent
    pas d'erreur.
    Est-ce un "Bug" dans BDS.2006 VCL.NET ou une erreur de ma part, ou
    autre chose ?

    Merci d'avance à celui qui connaît la réponse.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    var
      Form1: TForm1;
    implementation
    {$R *.dfm}  //$R *.nfm en VCL.NET
     
    Var Projet,Chemin:string;
        F2:TFilesTream;
     
    procedure CreerFichier;
    begin
    F2:=TFileStream.Create(chemin,fmCreate OR fmShareExclusive);
    F2.Free;
    end;
     
    procedure OuvrirFichier;
    begin
    F2:=TFileStream.Create(chemin,fmOpenReadWrite OR fmShareExclusive);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Projet:='Dossier01';
    chemin:='C:\'+Projet+'.FX1';
    CreerFichier;
    OuvrirFichier;
    showmessage('Après ce message, seconde tentative d''ouverture du fichier');
    OuvrirFichier;
    showmessage('Après seconde ouverture');
    F2.Free;
    end;
     
    end.

  2. #2
    Membre éclairé
    Avatar de adaneels
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2006
    Messages : 236
    Par défaut
    F2.Free ne libèrerait-elle pas le fichier de façon plus intelligente en Delphi 2006 (c'est à dire fermer le stream avant de tout libérer) ?

  3. #3
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 538
    Billets dans le blog
    10
    Par défaut
    J'ai constaté le problème. Ton code est correct. C'est un premier point. Deuxième point : la solution .NET à priori ne pose pas de verrou sur le fichier donc je recherche dans ce sens ....

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Par défaut
    J'ai trouvé sur "Quality Central"..."Delphi.Net", à l'adresse
    http://qc.borland.com/wc/qcmain.aspx?da=3533

    #45505 - Filestream.Lock causes read error in unlocked areas

    Je pense que c'est en rapport direct avec mon problème.
    Qu'en pensez-vous ?
    Merci...

  5. #5
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 538
    Billets dans le blog
    10
    Par défaut
    Essaye ce code qui te permet de vérifier si le fichier est déjà ouvert.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure OuvrirFichier;
    begin
      F2:=TFileStream.Create(chemin,fmShareDenyWrite) ;
      F2.Free ;
      F2:=TFileStream.Create(chemin,fmOpenReadWrite OR fmShareExclusive);
    end;

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Par défaut
    [ALWEBER]...Essaye ce code qui te permet de vérifier si le fichier est déjà ouvert.

    C'est une bonne idée.

    Je ne pourrai effectuer le test que dans 48 heures, car l'ordinateur sur lequel
    je programme a rendu l'âme.
    Ma nouvelle machine ne sera disponible que demain.

    Je vous informerai des résultats du test.

    Merci...

Discussions similaires

  1. Où se trouve l'editeur de ressource dans BDS 2006 ?
    Par kurul1 dans le forum C++Builder
    Réponses: 6
    Dernier message: 03/07/2007, 15h04
  2. Problème JVCL et BDS 2006
    Par kurul1 dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/05/2007, 08h39
  3. Problème "Ping" de la FAQ avec BDS 2006 ?
    Par [ZiP] dans le forum Delphi
    Réponses: 10
    Dernier message: 20/12/2006, 08h38
  4. [BDS 2006] Hint dans menu
    Par doudoustephane dans le forum C++Builder
    Réponses: 10
    Dernier message: 05/09/2006, 16h14
  5. [BDS 2006] Lien et changement de font dans une statusbar
    Par doudoustephane dans le forum C++Builder
    Réponses: 6
    Dernier message: 03/09/2006, 00h12

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