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

Caml Discussion :

[debutant] lecture de fichier


Sujet :

Caml

  1. #1
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut [debutant] lecture de fichier
    Bonjour, mon soucis est de lire des images à partir de fichiers PPM et les afficher.
    Oublions d'abord que je ne sais pas comment manipuler / afficher une image, que j'ignore coment ouvrir et lire un fichier et disons que j'essaye quand meme et voici un premier problème (merci de pas trop rire) :

    j'essaye dans un premier temps de lire les lignes d'un fichier :

    Ceci fonctionne :

    Code caml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     let flux = open_in "C:\ocaml\machin.txt";;
     print_string read_line flux;;
     close_in flux;;

    mais pas ceci :
    Code caml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    let flux = open_in "c:\ocaml\machin.txt" in
     print_string read_line flux;;
    close_in flux;;

    Pourriez-vous m'expliquer pourquoi ?

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par cladsam
    mais pas ceci :
    Code caml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    let flux = open_in "c:\ocaml\machin.txt" in
     print_string read_line flux;;
    close_in flux;;

    Pourriez-vous m'expliquer pourquoi ?
    Si je rajoute des parenthèses tu verras peut-être mieux :
    Code ocaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (
    let flux = open_in "c:\ocaml\machin.txt" 
        in print_string read_line flux;;
    )
    close_in flux;;

    flux n'est pas défini dans la dernière ligne...
    Ce que tu veux c'est plutôt cela :

    Code caml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let flux = open_in "c:\\ocaml\\machin.txt" 
    in begin
     print_string (input_line flux);
     close_in flux;
    end

    J'en profite pour corriger un certain nombre d'autres erreurs (peut-être due au copier coller, si ta première tentative marchait).

    --
    Jedaï

  3. #3
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Merci beaucoup, la je crois avoir gagné le boulet d'or 2007
    par contre je me permets encore 3 petites questions parcequ'elle vont bien dans un post sur la lecture de fichiers et que cela m'intrigue :
    - n'existe t'il pas en Ocaml de fonctions pour ouvrir un Fil Explorer pour choisir le nom de fichier ?
    - Pourquoi faut-il mettre des \\ au lieu des \ que du reste il accepte mes a coup de Warning ... je trouve cela contraignant, dotant plus si l'utilisateur doit saisir la localisation du fichier
    - Au cas ou la reponse a la première question est Non, existe t'il des moyens de connaitre le contenu d'un repertoire ? tester l'existence d'un fichier etc ...
    J'ai bien vu un module Filename mais il parlent de commdandes Unix et je suis sous Windows

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par cladsam
    Merci beaucoup, la je crois avoir gagné le boulet d'or 2007
    par contre je me permets encore 3 petites questions parcequ'elle vont bien dans un post sur la lecture de fichiers et que cela m'intrigue :
    - n'existe t'il pas en Ocaml de fonctions pour ouvrir un Fil Explorer pour choisir le nom de fichier ?
    - Pourquoi faut-il mettre des \\ au lieu des \ que du reste il accepte mes a coup de Warning ... je trouve cela contraignant, dotant plus si l'utilisateur doit saisir la localisation du fichier
    - Au cas ou la reponse a la première question est Non, existe t'il des moyens de connaitre le contenu d'un repertoire ? tester l'existence d'un fichier etc ...
    J'ai bien vu un module Filename mais il parlent de commdandes Unix et je suis sous Windows
    La prochaine fois numérote tes questions, c'est plus facile pour répondre.
    1. Tk.getOpenFile ou Tk.getSaveFile fait ça apparemment
    2. les \\ sont parce que les chaînes de caractères littérales en OCaml te permettent comme dans les 4/5èmes des langages d'utiliser des suites de symboles spéciales pour écrire des caractères de contrôle (exemple : \n pour une nouvelle ligne). Donc lorsqu'il y a un \ dans une chaîne, avec un caractère qui ne fait pas partie de ceux pour lesquels la séquence a un sens, il y a une ambiguïté : s'agit-il d'une faute de frappe, ou veux-tu réellement un \ dans ta chaîne ? Normalement si tu veux un \, il faut que tu écrive \\, de façon que \\n ne soit pas mal interprété. Ne t'inquiète pas, ceci ne vaut que pour les chaînes écrites en toute lettre dans le code source, les chaînes récupérées à partir de l'extérieur ne sont pas soumis à une telle interprétation, et si quelqu'un écrit \n sur l'entrée standard, cela reste \n dans la chaîne.
    3. Les commandes "Unix" sont en réalité plutôt des commandes POSIX, c'est à dire un standard pour les OS, un ensemble de fonctions que tout OS devrait fournir... Malheureusement Microsoft n'a jamais fait grand cas des standards, et les windows ne sont donc guère compatible POSIX (la situation s'améliore). Néanmoins la plupart des appels POSIX peuvent être plus ou moins émulés sous Windows, ce qui fait que la plupart des commandes de ce module fonctionnera probablement, sinon ce sera spécifié dans la doc.


    --
    Jedaï

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Plutôt qu'Unix, utilise Sys (et Filename pour les manipulations des noms des répertoires/fichiers, effectivement).

  6. #6
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Exact : il vaut miex qure les débutants ne touchent pas aux fonctions de la librairie Unix... d'ailleurs, ça m'étonnerait qu'ils comprennent !

    Toute la librairie Unix fonctionne sous Windows, à l'exception notable près de la primitive fork et des quelques autres listées dans la documentation.

    Pour ce qui est de POSIX / Windows, il faut noter qu'heureusement depuis quelques années Windows implante une partie de POSIX (en fait, depuis Windows NT)... mais je continue tout de même de penser que Windows = caca...

    Pour ce qui est des fonctions Tk.getOpenFile et Tk.getSaveFile, il faut dire que leur utilisation se fait avec labltk, dont l'utilisation n'est pas vraiment conseillée aux débutants, et encore plus aux personnes ne connaissent rien à Tcl/Tk.

  7. #7
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    Exact : il vaut miex qure les débutants ne touchent pas aux fonctions de la librairie Unix... d'ailleurs, ça m'étonnerait qu'ils comprennent !

    Toute la librairie Unix fonctionne sous Windows, à l'exception notable près de la primitive fork et des quelques autres listées dans la documentation.

    Pour ce qui est de POSIX / Windows, il faut noter qu'heureusement depuis quelques années Windows implante une partie de POSIX (en fait, depuis Windows NT)... mais je continue tout de même de penser que Windows = caca...

    Pour ce qui est des fonctions Tk.getOpenFile et Tk.getSaveFile, il faut dire que leur utilisation se fait avec labltk, dont l'utilisation n'est pas vraiment conseillée aux débutants, et encore plus aux personnes ne connaissent rien à Tcl/Tk.

    Merci pour le "ca m'étonnerait qu'ils comprennent" mais j'ai dit débutant en Ocaml pas débutant en développement pour ce qui est des commandes Unix, des processus, des exec , signaux, sémaphores et toutes les bases de la prog sys j'ai pas particulièrement de soucis ...

  8. #8
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par cladsam
    - existe t'il des moyens de connaitre le contenu d'un repertoire ? tester l'existence d'un fichier etc ...
    J'ai pas envie de lancer de polémique, et je te crois, mais ce genre de commentaire (et d'autres) me paraît troublant pour quelqu'un qui dit ne pas avoir de soucis en programmation système.

  9. #9
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    je vais le répéter ... je parle en Ocaml, langage qui m'est imposé et auquel je n'ai jamais touché au préalable, ensuite que tu me crois ou non je pense pas vraiment avoir à me justifier de quoi que soit

  10. #10
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    stop, on ne se dispute pas...


    Citation Envoyé par cladsam
    contenu d'un repertoire
    Sys.readdir : string -> string array

    Citation Envoyé par cladsam
    tester l'existence d'un fichier
    Sys.file_exists : string -> bool


    plus de détails : http://caml.inria.fr/pub/docs/manual...ibref/Sys.html

  11. #11
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    merci beaucoup

Discussions similaires

  1. [Debutant] Lecture de fichier txt
    Par vbbarent dans le forum Débuter
    Réponses: 11
    Dernier message: 06/05/2008, 11h13
  2. [debutant] lecture de fichier (encore)
    Par SPACHFR dans le forum Débuter
    Réponses: 20
    Dernier message: 24/05/2007, 17h43
  3. [debutant] lecture de fichier
    Par SPACHFR dans le forum Débuter
    Réponses: 3
    Dernier message: 23/05/2007, 17h50
  4. [debutant] lecture d'un fichier txt de 10mo
    Par karamazov994 dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 19/04/2005, 15h55
  5. [Debutant] split() , Tokenizer , et lecture de fichier
    Par SirDarken dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 22/09/2004, 00h35

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