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

C# Discussion :

[Debutant] Ecrire un objet perso dans un fichier


Sujet :

C#

  1. #1
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut [Debutant] Ecrire un objet perso dans un fichier
    Bonjour à tous,

    Voilà, pour passer le temps, et surtout pour un peu mieu me familiariser avec le C#, j'ai décidé de mettre en place une petite application pour trié et gérer ma collection de film et CD audio, vyniles, ... (bref un peu de tout).

    Maintenant, je suis arriver à un point où j'aurais aimer sauver mes listes sur disques.
    Pour cela, j'ai crée une classe:

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
        class Fichier
        {
            private Bitmap fImage;
            private string fTitre;
            private string fGenre;
            private string fDateSortie;
            private string fDistributeur;
            private string fOrigine;
            private string fDuree;
            private string fRealisateur;
            private ArrayList fCasting;
     
            //
            //  Image
            //
            public void setfImage(Bitmap I)
            {
                fImage = I;
            }
            public Bitmap getfImage()
            {
                return fImage;
            }
     
            //
            //  Titre
            //
            public void setfTitre(string T)
            {
                fTitre = T;
            }
            public string getfTitre()
            {
                return fTitre;
            }
     
            //
            //  Genre
            //
            public void setfGenre(string G)
            {
                fGenre = G;
            }
            public string getfGenre()
            {
                return fGenre;
            }
     
            //
            // Date de sortie
            //
            public void setfDateSortie(string DS)
            {
                fDateSortie = DS;
            }
            public string getfDateSortie()
            {
                return fDateSortie;
            }
     
            //
            //  Distributeur
            //
            public void setFDistributeur(string D)
            {
                fDistributeur = D;
            }
            public string getfDistributeur()
            {
                return fDistributeur;
            }
     
            //
            //  Origine
            //
            public void setfOrigine(string O)
            {
                fOrigine = O;
            }
            public string getfOrigine()
            {
                return fOrigine;
            }
     
            //
            //  Durée
            //
            public void setfDuree(string D)
            {
                fDuree = D;
            }
            public string getfDuree()
            {
                return fDuree;
            }
     
            //
            //  Réalisateur
            //
            public void setfRealisateur(string R)
            {
                fRealisateur = R;
            }
            public string getfRealisateur()
            {
                return fRealisateur;
            }
     
            //
            //  Casting
            //
            public void setfCasting(string C)
            {
                fCasting.Add(C);
            }
            public string getfCasting()
            {
                //return fCasting;
                return "Non executer";
            }
     
     
        }
    Comme le nom de la classe le situe, je souhaiterais écrire celle ci dans un fichier.
    Cette classe contient, comme vous l'aurez constater, toutes les méthodes get et set pour initialiser les variables private et en récupérer les valeurs.
    J'ai un problème pour récupérer les valeurs les unes à la suite des autres hors de ma variable fCasting qui est de type ArrayList( pour permettre d'avoir plusieurs acteurs dans le cas d'un film)
    Maintenant, pour sauver mon objet instancier de la classe fichier dans le fichier préalablement choisit par l'utilisateur, je ne sais pas comment faire.
    Quelle classe est ce que je dois instancier? Est ce que je prend FileStream, StreamWriter,...??

    Est ce que quelqu'un pourrait me renseigner à ce sujet et éventuellement me dire comment l'implémenter?

    Je tiens à préciser, que mes objets de type "fichier", je les place dans une Arraylist (vu qu'elles peuvent contenir des objets de n'importe quel type). Donc je pense que je devrais écrire mon ArrayList dans le fichier, ArrayList que j'ai appeler alFichier (j'ai beaucoup d'imagination ).

    Merci pour le coup de clavier que vous pourrez me fournir, je vous souhaites quoi qu'il en soit une bonne journée ensoleillée.

    Richard_sraing

  2. #2
    Membre averti
    Avatar de sam_XIII
    Profil pro
    Inscrit en
    Août 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 221
    Points : 353
    Points
    353
    Par défaut
    tu as plein de solutions pour sérialiser,

    une solution : tu peux utiliser un xmlserialiser (voici un exemple)

    une remarque : utilise les propriétés plutot que des get et set séparés

    tu peux ouvrir ton bouquin de monsieur gérard aussi, tout est dedans

  3. #3
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    D'accord, mais je ne vois absolument pas comment il utilise les propriétés dans son bouquin. Si tu l'as sous la main, il en parle page 128, mais je comprend rien du tout.

    Et pour le lien que tu m'as filé, je ne comprend rien non plus.
    C'est pas pour dire, mais le cours qu'on a eu avant Noel en théorie n'a servi a rien. On aurait pu aller boire des bières à la Fringale à la place...

    Bon quoi qu'il en soit, merci quand même.

    [EDIT]
    Bon vu que j'ai quand même pas envie de mourrir débile, je vais essayer de faire les propriétés déjà...

    alors supposons pour ma variable Bitmap, j'aurais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            public Bitmap fImage
            {
                get { return fImage; }
                set { fImage = value; }
    Mais maintenant, pour y accéder, il suffit que j'appelle la méthode get et set de fImage alors, donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fImage.set(<une valeur>);
    /* ou alors */
    <Un bitmap> = fImage.get();
    ? pourrais tu confirmer Sam??

  4. #4
    Membre averti
    Avatar de sam_XIII
    Profil pro
    Inscrit en
    Août 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 221
    Points : 353
    Points
    353
    Par défaut
    Citation Envoyé par richard_sraing
    Mais maintenant, pour y accéder, il suffit que j'appelle la méthode get et set de fImage alors, donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fImage.set(<une valeur>);
    /* ou alors */
    <Un bitmap> = fImage.get();
    ? pourrais tu confirmer Sam??

    je confirme pas

    c'est comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // pour le set
    TonObjet.fImage = tonimage;
     
    // pour le get :
     
    tonimage = TonObjet.fImage ;
    je pense qu'il est temps de revoir tes notes

    prends le temps de lire le bouquin, tout y est expliqué

    et puis si tu veux pas de ce bouquin il y a les cours sur developpez.com

  5. #5
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Ben voilà,

    j'ai essayer de placer les données que je saisi dans un fichier xml en utilisant le xmlSerialiser comme SAM_XIII me l'a montré plus haut, mais je n'obtient pas le résultat escompter.

    En fait, je souhaiterais pouvoir enregistrer mes objets de type Fichier tel quel dans sur le disque pour pouvoir les récupérer lors d'une prochaine ouverture.

    J'ai essayer en utilisant le BinaryWriter ou autre du même genre, mais ils prennent pas les objets personnalisés.

    Est ce que quelqu'un pourrait me donner un conseil. Je tiens à préciser que je n'ai jamais utilisé de fichier xml avant de faire le test du code de SAM.
    Donc si vous pouviez me donner une astuce en évitant le xml, ce serait super . Je me rappelle aussi qu'en "C" (oui ça remonte a il y a longtemps pour certains peut être ), il y avait moyen de spécifier le nom de fichier qu'on voulait, par exemple "test.abc" ou encore "test.xtc". Je suppose que dans un langage comme le C# ils ne vont pas avoir enlevé cette option...

    Je tiens peut être à replacer ci dessous ma classe Fichier que je souhaiterais écrire sur disque:

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
        class Fichier
        {
            private Bitmap fImage;
            private string fTitre;
            private string fGenre;
            private string fDateSortie;
            private string fDistributeur;
            private string fOrigine;
            private string fDuree;
            private string fRealisateur;
            private ArrayList fCasting;
     
     
            //
            //  Image
            //
            public Bitmap Image
            {
                get { return fImage; }
                set { fImage = value; }
            }
     
            //
            //  Titre
            //
            public string Titre
            {
                get { return fTitre; }
                set { fTitre = value; }
            }
     
            //
            //  Genre
            //
            public string Genre
            {
                set { fGenre = value; }
                get { return fGenre; }
            }
     
            //
            // Date de sortie
            //
            public string DateSortie
            {
                set { fDateSortie = value; }
                get { return fDateSortie; }
            }
     
            //
            //  Distributeur
            //
            public string Distributeur
            {
                set { fDistributeur = value; }
                get { return fDistributeur; }
            }
     
            //
            //  Origine
            //
            public string Origine
            {
                set { fOrigine = value; }
                get { return fOrigine; }
            }
     
            //
            //  Durée
            //
            public string Duree
            {
                set { fDuree = value; }
                get { return fDuree; }
            }
     
            //
            //  Réalisateur
            //
            public string Realisateur
            {
                set { fRealisateur = value; }
                get { return fRealisateur; }
            }
     
            //
            //  Casting
            //
            public string Casting
            {
                set { fCasting.Add(value); }
                //return fCasting;
    // je sais c'est pas bon :lol: mais j'avais pas encore envie de chercher...
                get { return fCasting[1].ToString(); }
            }
        }

    Voilà, j'espère que vous avez tout les détails dont vous avez besoin pour éventuellement me fournir une proposition de marche à suivre.

    Merci d'avance pour toutes vos astuces,

    Richard_Sraing

Discussions similaires

  1. Ecrire & Lire des énumérés dans un fichier Texte
    Par WebPac dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 10h04
  2. Réponses: 14
    Dernier message: 24/07/2006, 12h09
  3. Ecrire à un endroit précis dans un fichier texte
    Par zemeilleurofgreg dans le forum Delphi
    Réponses: 4
    Dernier message: 26/06/2006, 21h51
  4. [osql][debutant] resultat d'une requete dans un fichier
    Par Merfolk dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/06/2006, 17h12
  5. Réponses: 5
    Dernier message: 22/03/2006, 13h25

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