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 :

[DELPHI6] et FileOpen


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Points : 50
    Points
    50
    Par défaut [DELPHI6] et FileOpen
    Bonjour,

    Je souhaite écrire et lire dans un fichier à partir de plusieurs processus.
    Je pensais qu'en ouvrant un fichier existant avec la fonction FileOpen
    avec fmShareDenyNone j'atteindrai l'objectif mais non. D'autre part quand je veux écrire dans ce fichier (ouvert avec fmOpenWrite) des chaînes de caractères je trouve dans mon fichier des caractères bizarres.

    Voici les lignes de codes que j'utilise :

    Cas 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
        h : Integer;
     
        FileName:='toto.txt';
     
        If Not FileExists(FileName) Then Begin
            h:=FileCreate(FileName);
            FileClose(h);
        End;
        h:=FileOpen(FileName,fmOpenWrite);

    Cas 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    var
        str : String;
    begin
        str:='toto';
        If Not FileWrite(hLog,str,Length(str)) < 0 Then
            Label1.Caption:=str
        Else
            Label1.Caption:='Erreur';
    Merci pour vos réponses.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 874
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    le FileWrite n'attend-il pas un PChar plutôt qu'un String ?
    remplace dans ce cas par PChar(str) !

  3. #3
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Non ce n'est pas un pointeur qu'il faut fournir mais un buffer non typé.

  4. #4
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut Re: [DELPHI6] et FileOpen
    Bonjour,

    remplace str par str[1] dans filewrite.


    comme tu dis, il faut un buffer non typé. or str est un string donc un ponteur. on donne donc l'adresse du premier char de str à la fonction. Length fera le reste

  5. #5
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Ok bjl, j'ai testé ton code, ça marche.

    Mais maintenant comment faire pour qu'un fichier soit accessible (en lecture /écriture) par plusieurs programmes ?

  6. #6
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Le problème c'est que fileopen réserve le fichier pour une application et une seule.

    donc

    1) soit créer une application qui réserve le fichier et manage les accès (lecture et écriture), reçoit les requètes des autres applications et y répond.

    2) écrire ou lire et refermer le fichier aussitôt. lors d'une tentative d'accès si le fichier est déjà réservé, on met en attente et on recommence après un temps d'attente.

  7. #7
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Merci pour ton aide. J'ai refais des tests et je pense que j'ai dû faire une erreur. Voici l'instruction qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    h:=FileOpen(f,fmOpenReadWrite or fmShareDenyNone);

    [/code]

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

Discussions similaires

  1. [Delphi6] Saut de page
    Par Seb328Ci dans le forum QuickReport
    Réponses: 1
    Dernier message: 02/10/2003, 12h36
  2. Delphi6 et directx
    Par toure32 dans le forum DirectX
    Réponses: 1
    Dernier message: 13/10/2002, 18h15
  3. [CR8][Delphi6] erreur imprimante non supportée
    Par Sebastien L. dans le forum SDK
    Réponses: 3
    Dernier message: 12/09/2002, 15h42
  4. delphix et delphi6 une legende???
    Par genteur slayer dans le forum DirectX
    Réponses: 1
    Dernier message: 19/08/2002, 16h43
  5. [Kylix] DELPHI6-CLX problème Onmousedown ....
    Par Bodin Yvon dans le forum EDI
    Réponses: 2
    Dernier message: 22/07/2002, 11h01

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