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

Fortran Discussion :

Probleme lors de l'ouverture d'un fichier binaire


Sujet :

Fortran

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut Probleme lors de l'ouverture d'un fichier binaire
    Bonjour,
    J'ai un problème lors de l'ouverture d'un fichier de données binaire.

    Mon fichier a les caractéristiques suivante :
    Integers, signed
    Little-endian ordering
    taille du fichier : 10800,4800
    10800*4800=51840000

    J'ai essayer de l'ouvrier en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    open (10,file='/home/kevin/data.dir/topography.dir/DEM1kGlobalInPart.dir/a10g',&
    form='unformatted',access='direct',recl=51840000)
    l'erreur que j'obtiens est:
    Fortran runtime error: Format present for UNFORMATTED data transfer

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    Salut,

    Je me demande juste au niveau de la lecture de quelle façon la fais tu?

    Le fichier binaire a t'il été produit par fortran?

  3. #3
    Membre habitué Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 192
    Points
    192
    Par défaut
    Bonjour

    Autre piste : la machine sur laquelle tu essaies de lire ton fichier non-formatté est-elle du même type (i.e même architecture) que celle sur laquelle le fichier a été créé. Les normes Fortran 90/95 précisent bien dans le paragraphe 9.1.2 "Unformatted record"
    An unformatted record consists of a sequence of values in a processor-dependent form.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Merci pour vos réponse.

    Il y a bien un problème lors de la lecture du fichier (si je commente la ligne ou je lis le fichier je n'ai plus d'erreur a la compilation). Je pensais lire le fichier en faisant :
    Il semblerai que se ne soit pas aussi simple.

    Je ne sais pas comment les données ont été produite (je l'ai ai récupérées sur le site de la NOAA, http://www.ngdc.noaa.gov/mgg/topo/gltiles.html).
    Cependant je sais qu'elles ont été produites pour : IBM PC-compatible byte order, http://www.ngdc.noaa.gov/mgg/topo/re...1/s11Giii.html

    Dans un premier temps, j'avais du utiliser matlab et avais pu ouvrir ce fichier. Cependant cela est un peu plus difficile pour moi a faire en fortran étant donné que je suis débutant.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    Salut,

    Le problème avec la commande que tu utilises ici (read(10,*)) est que tu demandes à ton programme de lire un fichier formatté (symbolisé par l'étoile).

    Essayes plutôt avec read(18) hb, là tu lui diras de lire un fichier correspondant à l'ouverture demandée (FORM='unformatted').

    Bonne journée,

    Marlan

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Merci,
    quand j'essaie read(10) hb, je suppose que le 18 était une faute de frappe, j'obtiens:
    Direct access data transfer requires record number

    Si j'essaie : read (10,rec=51840000) hb ça me donne :
    Non-existing record number

    Une suggestion?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    Salut,

    Effectivement, le 18 était une faute de frappe.

    Alors, concernant le 'rec', il ne correspond pas à la taille de ton fichier, mais au nombre de nombres enregistrés dedans (ie : le nombre de ligne).

    Admettons donc que ton fichier fasse 51840000 octets, sauvegardé en réels 8 (ou double précision), alors rec devrait avoir pour valeur 810000 (51840000/64), le 64 étant 8 octets codés sur 8 bits chacun (si je ne me trompes pas).

    A mon avis, l'erreur que tu fais là est d'indiquer la taille du fichier au lieu du nombre de nombres à prendre en considération.

    En espérant avoir pu t'aider,

    Marlan

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Salut et merci de ton aide.
    RECL dans open correspond t'il a la meme chose que REC dans read?

    Merci

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    Alors, sauf erreur de ma pars, le 'recl' dans l'ouverture indique le nombre de nombres, celui dans le 'read' indique directement la ligne à laquelle aller lire le nombre.

    ie : read(10,rec=2) VAL te dirait que VAL aura pour valeur la seconde donnée du fichier.

    A plus,

    Nota : regardes ce post pour plus de précision :

    http://www.developpez.net/forums/d21...-acc-s-direct/

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/08/2009, 01h22
  2. erreur lors de l'ouverture d'un fichier
    Par programaniac dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2007, 21h12
  3. [VBA] probleme lors de la creation d'un fichier
    Par tiotel dans le forum Access
    Réponses: 3
    Dernier message: 09/08/2006, 16h00
  4. plantage de qlqs secondes lors de l'ouverture d'un fichier
    Par princetn dans le forum Windows XP
    Réponses: 6
    Dernier message: 28/02/2006, 13h48
  5. problem lors de l'ecriture d'un fichier
    Par gemai dans le forum C
    Réponses: 20
    Dernier message: 29/08/2003, 16h01

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