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 :

code á completer


Sujet :

C#

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut code á completer
    Salut,
    j´ai ecrit le code suivant et j aimerais svp que quelqu´un m´aide a completer.
    j ai 3 functions avec des parametres . j´aimerais recuperer les informations donner dans les functions et les attribuer au string Line de la fonction Main. de sorte qu´a la fin du programme les informations soient enregistrées dans mon fichier comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    100;83;4027671000005;4024391000001;201524323;"Soft"
    120;83;4027671000005;4024391000001;= 2015 - 24323;"ADR";
    300;83;4027671000005;4024391000001;2015 - 24323;"Blau";
    voila le code
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    using System.Diagnostics;
    using System.Reflection;
    using System.Data.SqlClient;
     
    namespace test
    {
        class Textdatei
        {
            public static string KopfSegment (int segmentkennzeichner, int DokumentArt, long Lieferant, long RechnungEmpfänger, int Rechnungsnummer, DateTime Lieferantendatum, string Käufer)
            {
                int Seg;
                int Dok;
                long Lie;
                long RechEmpf;
                int RechNum;
                DateTime LfDatum;
                String Kf;
                Seg = segmentkennzeichner;
                Dok = DokumentArt;
                Lie = Lieferant;
                RechEmpf = RechnungEmpfänger;
                RechNum = Rechnungsnummer;
                LfDatum = Lieferantendatum;
                Kf = Käufer;
     
                segmentkennzeichner = 100;
                DokumentArt = 83;
                Lieferant = 4027671000005;
                RechnungEmpfänger = 4024391000001;
                Rechnungsnummer = 2015 - 24323;
                //Lieferantendatum = 03.08.2015;
                Käufer = "Soft";
                return KopfSegment;
            }
     
            public static string Adressegment(int segmentkennzeichner, int DokumentArt, long Lieferant, long RechnungEmpfänger, int Rechnungsnummer,string  Adressart, double Postleitzahl)
            {
     
                segmentkennzeichner = 120;
                DokumentArt = 83;
                Lieferant = 4027671000005;
                RechnungEmpfänger = 4024391000001;
                Rechnungsnummer = 2015 - 24323;
                //Lieferantendatum = 03.08.2015;
                Adressart = "ADR";
                return Adressegment;
            }
     
            public static string Positionsegment(int segmentkennzeichner, int DokumentArt, long Lieferant, long RechnungEmpfänger, int Rechnungsnummer, string Textart, int Textschlüssel)
            {
     
                segmentkennzeichner = 300;
                DokumentArt = 83;
                Lieferant = 4027671000005;
                RechnungEmpfänger = 4024391000001;
                Rechnungsnummer = 2015 - 24323;
                Textart = "Blau";
                return Positionsegment;
            }
     
     
            static void Main(string[] args)
            {
                string Textdatei = @"C:\Projekte\Ascii_Schnittstelle\test.txt";
     
                string line = ; // information de Kopfsegment, positionsegment et addresssegment  attribuer
                File.WriteAllLines(Textdatei,Line, Encoding.ASCII);
     
     
     
            }
        }
    }
    merci d avance

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 93
    Points : 127
    Points
    127
    Par défaut
    A quoi bon mettre des paramètres si tu leur donne une valeur fixe dans la fonction ??
    Si j'ai bien compris ton soucis tu dois simplement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    public static string Positionsegment(int segmentkennzeichner, int DokumentArt, long Lieferant, long RechnungEmpfänger, int Rechnungsnummer, string Textart, int Textschlüssel)
            {
                //d'ailleurs int Textschlüssel tu ne t'en sers meme pas ??
                return segmentkennzeichner .String() + ";" +DokumentArt.ToString() +";" +Lieferant.ToString() +";"+ RechnungEmpfänger.ToString()  +";" +Rechnungsnummer.ToString() +";" Textart  +";";
            }
    Et dans ton main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string lineSegment = Positionsegment(300,83, 4027671000005, 4024391000001, 2015 - 24323, "Blau", 0);

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    merci de votre reponse. les parametres n auront pas une valeur fixe. les valuers fixe etaient juste un test.
    au ce niveau du code j´obtiens l erreur suivante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      return Positionsegment.String() + ";" +DokumentArt.ToString() +";" +Lieferant.ToString() +";"+ RechnungEmpfänger.ToString()  +";" +Rechnungsnummer.ToString() +";" +Textart  +";";
    l erreur 1 : Ascii_Schnittstelle.Textdatei.Positionsegment (int, int, long, long, int, string, int)" est une "méthode" et le contexte spécifié n´est pas valide.
    et dans la fonction Main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string Textdatei = @"C:\Projekte\Ascii_Schnittstelle\test.txt";   
      string lineSegment = Positionsegment(300, 83, 4027671000005, 4024391000001, 2015 - 24323, "Blau", 0);
                File.WriteAllLines(Textdatei,lineSegment, Encoding.ASCII); // erreur au niveau de WriteAllLines 
    erreur 2: Le meilleur match pour les System.IO.File.WriteAllLines surchargés (string, System.Collections.Generic.IEnumerable <string>, System.Text.Encoding) méthode a quelques arguments invalides.
    erreur 3: Argument 2: Vous ne pouvez pas convertir de "string" dans "System.Collections.Generic.IEnumerable <string>" .
    comment corriger ces erreurs
    merci

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    la réponse est dans le message d'erreur : File.WriteAllLines attend un IEnumerable de <string> en deuxième paramètre, pas un string seul.
    Tu peux donc lui passer un tableau de string ou une collection de string. Petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    List<string> lines = new List<string>();
    lines.Add(KopfSegment(/* les param qui vont bien */));
    lines.Add(Adressegment(/* les param qui vont bien */));
    lines.Add(Positionsegment(/* les param qui vont bien */));
    File.WrtieAllLines(@"C:\folder\file.txt", lines, Encoding.ASCII);
    Maintenant c'est pas la méthode que j'aurais choisie par défaut, à voir dans ton contexte.
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 93
    Points : 127
    Points
    127

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    merci de votre reponse. j ai modifié le programme comme suit
    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
    namespace Ascii_Schnittstelle
    {
        class Textdatei
        {
            public static string KopfSegment (int segmentkennzeichner, int DokumentArt, long Lieferant, long RechnungEmpfänger, int Rechnungsnummer, int Lieferantendatum, string Käufer)
            {
      return string.Format("{0};{1};{2};{3};{4};{5};{6};", segmentkennzeichner, DokumentArt, Lieferant, RechnungEmpfänger, Rechnungsnummer, Lieferantendatum, Käufer);
              }
       public static string Adressegment(int segmentkennzeichner, int DokumentArt, long Lieferant, long RechnungEmpfänger, int Rechnungsnummer,string  Adressart, double Postleitzahl)
            {
          return string.Format("{0};{1};{2};{3};{4};{5};{6};", segmentkennzeichner, DokumentArt, Lieferant, RechnungEmpfänger, Rechnungsnummer, Adressart, Postleitzahl);
     
            }
      public static string Positionsegment(int segmentkennzeichner, int DokumentArt, long Lieferant, long RechnungEmpfänger, int Rechnungsnummer, string Textart, int Textschluessel)
            {
                return string.Format("{0};{1};{2};{3};{4};{5};{6};", segmentkennzeichner, DokumentArt,  Lieferant, RechnungEmpfänger, Rechnungsnummer, Textart == null ? string.Empty : Textart, Textschluessel);
         }
     
     
            static void Main(string[] args)
            {
                string Textdatei = @"C:\Projekte\Ascii_Schnittstelle\test2.txt";
                if (!File.Exists(Textdatei))
                {
                    System.IO.Directory.CreateDirectory(Textdatei);
                }
     
                if (File.Exists(Textdatei))
                {
                    File.WriteAllText(Textdatei, string.Empty);
                }
     
                List<string> lines = new List<string>();
                lines.Add(KopfSegment(100,83,4027671000005,4024391000001,24323,23,"Soft"));
                lines.Add(Adressegment(120, 83, 4027671000005, 4024391000001, 2015 - 24323, "ADR",456));
                lines.Add(Positionsegment(300, 83, 4027671000005, 4024391000001, 2015 - 24323, "blau", 0));
                File.WriteAllLines(@"Textdatei", lines, Encoding.ASCII);
     
            }
        }
    }
    je ne recois aucune faute. mais mon fichier dans le dossier est vide. les lignes n ont pas ete enregistrées.
    pourquoi les lignes ne sont pas enregistrées dans le fichier?
    merci

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Re,

    quelques soucis dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                if (!File.Exists(Textdatei))
                {
                    System.IO.Directory.CreateDirectory(Textdatei);
                }
    Cette instruction va te créer un répertoire qui s'appelle "C:\Projekte\Ascii_Schnittstelle\test2.txt", or ce que tu veux (je suppose) c'est vérifier l'existence/créer un répertoire qui s'appelle "C:\Projekte\Ascii_Schnittstelle" (et pour tester c'est Directory.Exists au passage).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                if (File.Exists(Textdatei))
                {
                    File.WriteAllText(Textdatei, string.Empty);
                }
    Ici l'instruction est un peu inutile : quoi qu'il arrive WriteAllLines écrira par-dessus le contenu existant, pas besoin de remettre à vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File.WriteAllLines(@"Textdatei", lines, Encoding.ASCII);
    Enfin, là t'as mis le nom de ta variable entre quote, du coup ça a dû écrire tes lignes dans un fichier qui s'appelle "Textdatei" dans le répertoire d'exécution de ton programme.
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if (!File.Exists(Textdatei))
                {
                    System.IO.File.CreateText(Textdatei);
                   Textdatei.Close();
                }
    je voulais en fait verifier l existence du fichier et si elle n existe pas creer.
    a ce niveau je n arrive pas á utiliser la fonction Close(), quelle directive me manque t il?
    voilá ceux que j´ai dans mon programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    using System.Diagnostics;
    using System.Reflection;
    using System.Data.SqlClient;
    merci

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    Hi,
    j´essaye d´utiliser une autre possibilté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    List<string> lines = new List<string>();
                lines.Add(KopfSegment(100, 83, 4027671000005, 4024391000001, 24323, 23, "Soft"));
                lines.Add(Adressegment(120, 83, 4027671000005, 4024391000001, 2015 - 24323, "ADR", 456));
                lines.Add(Positionsegment(300, 83, 4027671000005, 4024391000001, 2015 - 24323, "blau", 0));
     
                string path = @"C:\Projekte\Ascii_Schnittstelle\test.txt";
                using (StreamWriter sw = new StreamWriter(path, true))
                {
     
                    sw.WriteLine(lines);
                  }
    mais j´obtiens ceci comme sortie dans mon fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Collections.Generic.List`1[System.String]
    pourquoi les lignes ne sont pas ecrites dans le fichier dans ce cas?
    merci d´avance

  10. #10
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par maeva87 Voir le message
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if (!File.Exists(Textdatei))
                {
                    System.IO.File.CreateText(Textdatei);
                   Textdatei.Close();
                }
    je voulais en fait verifier l existence du fichier et si elle n existe pas creer.
    Si tu utilises File.WriteAllLines pas besoin de créer le fichier en amont, la fonction s'en chargera.

    Citation Envoyé par maeva87 Voir le message
    a ce niveau je n arrive pas á utiliser la fonction Close(), quelle directive me manque t il?
    Tu appelles la méthode Close() sur un objet de type string, d'où l'erreur. Si tu utilises la fonction CreateText() il faut récupérer le StreamWriter qu'elle retourne, et c'est depuis cette instance que tu pourras faire appel au Close(). Mais encore une fois c'est inutile.


    Citation Envoyé par maeva87 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using (StreamWriter sw = new StreamWriter(path, true))
    {
        sw.WriteLine(lines);
    }
    mais j´obtiens ceci comme sortie dans mon fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Collections.Generic.List`1[System.String]
    pourquoi les lignes ne sont pas ecrites dans le fichier dans ce cas?
    La fonction WriteLine va appliquer la méthode ToString() de l'objet passé en paramètre.
    Si tu lui passes une string il va l'écrire telle qu'elle, si tu lui passe un int il va l'écrire sous ça forme litérale et ainsi de suite pour les types de bases. Pour les classes plus évoluées la méthode ToString() renvoie simplement le nom du type d'objet.

    Si tu veux passer par un StreamWriter il va falloir boucler sur ta liste de string. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    string path = @"C:\Projekte\Ascii_Schnittstelle\test.txt";
    List<string> lines = new List<string>();
    lines.Add(KopfSegment(100, 83, 4027671000005, 4024391000001, 24323, 23, "Soft"));
    lines.Add(Adressegment(120, 83, 4027671000005, 4024391000001, 2015 - 24323, "ADR", 456));
    lines.Add(Positionsegment(300, 83, 4027671000005, 4024391000001, 2015 - 24323, "blau", 0));
     
    using (StreamWriter sw = new StreamWriter(path, false)) {
        foreach (string line in lines)
            sw.WriteLine(line);
    }
    Plus je connais de langages, plus j'aime le C.

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    merci
    using (StreamWriter sw = new StreamWriter(path, false)) {
    pourquoi á ce niveau vous avez utiliser False au lieu de true?
    j essaye actuellement une autre methode mais en definissant mes elements comme des classes et non String et en utilisant Streamwriter. je ne sais pas comment boucler sur ma liste dans Streamwriter pour avoir tous les parametres dans mon fichier. je recois autre chose dans mon fichier
    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
    namespace Schnittstelle
    {
        public class Kopfsegment
        {
            public int segmentkennzeichner { get; set; }
            public int DokumentArt { get; set; }
            public long Lieferant { get; set; }
            public long RechnungEmpfänger { get; set; }
            public int Rechnungsnummer { get; set; }
            public string Käufer { get; set; }
            public Kopfsegment( int Seg,int Dok,long Lie,long RechEmpf,int RechNum,String Kf)
            {
               segmentkennzeichner = Seg;
               DokumentArt = Dok;
               Lieferant = Lie;
               RechnungEmpfänger = RechEmpf;
               Rechnungsnummer = RechNum;
                Käufer = Kf;
     
                   //return string.Format("{0};{1};{2};{3};{4};{5};{6};", segmentkennzeichner, DokumentArt, Lieferant, RechnungEmpfänger, Rechnungsnummer, Käufer);       
            }
     
        } // Kopfsegement
     
        public class Adresssegment
        {
            public int segmentkennzeichner { get; set; }
            public int DokumentArt { get; set; }
            public long Lieferant { get; set; }
            public long RechnungEmpfänger { get; set; }
            public int Rechnungsnummer { get; set; }
            public string Adressart { get; set; }
            public Adresssegment( int Seg,int Dok,long Lie,long RechEmpf,int RechNum,String adressart)
            {
               segmentkennzeichner = Seg;
               DokumentArt = Dok;
               Lieferant = Lie;
               RechnungEmpfänger = RechEmpf;
               Rechnungsnummer = RechNum;
                Adressart = adressart;
            }
     
        } // Adresssegment
     
        class Program
        {
     
            static void Main(string[] args)
            {
     
                List<Kopfsegment> NCC_Kopfsegment;
                NCC_Kopfsegment = null;
                NCC_Kopfsegment = new List<Kopfsegment>();
                NCC_Kopfsegment.Add(new Kopfsegment(100, 83, 4027671000005, 4024391000001, 2015 - 24323, "Soft"));
     
                List<Adresssegment> NCC_Adresssegment;
                NCC_Adresssegment = null;
                NCC_Adresssegment = new List<Adresssegment>();
                NCC_Adresssegment.Add(new Adresssegment(120, 83, 4027671000005, 4024391000001, 2015 - 24323, "ADR"));
     
                string path = @"C:\Projekte\Ascii_Schnittstelle\test.txt";
     
                if (File.Exists(path))
                {              
                    File.WriteAllText(path, string.Empty);
                }
                using (StreamWriter sw = new StreamWriter(path, true))
                {
                    string KA = string.Join(";", NCC_Kopfsegment.Select(x => x.Käufer));
                    string KS = string.Join(";", NCC_Kopfsegment);
                    string AS = string.Join(";", NCC_Adresssegment);
                     sw.WriteLine(KS);
                     sw.WriteLine(AS);
                     sw.WriteLine(KA);
     
                }
     
     
    }
        }
    }
     
    // voila ce qui se souvegarde dans mon fichier 
    Schnittstelle.Kopfsegment
    Schnittstelle.Adresssegment
    Soft
    merci

  12. #12
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par maeva87 Voir le message
    pourquoi á ce niveau vous avez utiliser False au lieu de true?
    Si tu regardes la définition de la méthode sur la MSDN tu verras que ce dernier paramètre détermine le mode d'écriture dans le fichier :
    - si tu mets true tu es en mode "append" -> à chaque appel de ton programme tu vas ajouter des nouvelles lignes
    - si tu mets false tu es en mode "overwrite" -> tu écrases les données des précédents appels (comme si le fichier était vide).

    Pour tes classes on va commencer par factoriser tout ça (définir une seule classe pour tous tes objets).
    Ensuite on utiliser le point dont je t'ai parlé plus tôt : la fonction ToString() qu'on va surcharger.
    Enfin, on fera une boucle foreach comme pour les string, mais autour des instances de ta classe :

    La défintion de la 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
    public class Segment {
     
    	public int Segmentkennzeichner;
    	public int DokumentArt;
    	public long Lieferant;
    	public long RechnungEmpfänger;
    	public int Rechnungsnummer;
    	public string Identifier;
    	public Segment(int Seg, int Dok, long Lie, long RechEmpf, int RechNum, string id) {
    		Segmentkennzeichner = Seg;
    		DokumentArt = Dok;
    		Lieferant = Lie;
    		RechnungEmpfänger = RechEmpf;
    		Rechnungsnummer = RechNum;
    		Identifier = id;
    	}
    	public override string ToString() {
    		return string.Format("{0};{1};{2};{3};{4};{5}", Segmentkennzeichner, DokumentArt, Lieferant, RechnungEmpfänger, Rechnungsnummer, Identifier);
    	}
    }
    Le code de génération du fichier (sans les tests) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string path = @"C:\Work\zeg.txt";
    List<Segment> segments = new List<Segment>();
    segments.Add(new Segment(100, 83, 4027671000005, 4024391000001, 2015 - 24323, "Soft"));
    segments.Add(new Segment(120, 83, 4027671000005, 4024391000001, 2015 - 24323, "ADR"));
    using(StreamWriter ws = new StreamWriter(path, false)) {
    	foreach (Segment seg in segments)
    		ws.WriteLine(seg);
    }
    Petite remarque : tu définies Rechnungsnummer comme un int et tu lui passe 2015 - 24323. Du coup c'est le résultat de la soustraction qui va apparaitre dans ton fichier. Si tu veux l'avoir telle quelle il faut le déclarer comme string et ne pas oublier les doubles-quotes.
    Plus je connais de langages, plus j'aime le C.

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    salut
    merci. je prefere avoir plusieurs classes. car plutard j´aurais beaucoup d objekt qui auront des parametres totalement differents.et ce sera plus facile je pense de les distincter dans la fonction Main avec le nom de la classe.
    pour ton exemple j´obtions l erreur suivante dans la fonction Override string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    return string.Format("{0};{1};{2};{3};{4};{5}", Segmentkennzeichner, DokumentArt, Lieferant, RechnungEmpfänger, Rechnungsnummer, Identifier);
     
    erreur:FormatException n'a pas été traitée
    L'indice, sur la base de 0 (zéro) doit être supérieur ou égal à zéro et inférieure à la taille de la liste d'arguments.
    le format a bien fonctionner dans les autres cas.pourquoi le format ne fonctionne pas dans ce cas?
    merci

  14. #14
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Cette ligne fonctionne chez moi. Es-tu sûr de l'avoir bien copiée ? L'erreur que tu cites correspond à ton code à toi (tu as 7 spécifiers dans ton format, de 0 à 6, et seulement 6 variables dans ta va_list).
    Plus je connais de langages, plus j'aime le C.

  15. #15
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    Ah oui. merci

  16. #16
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    j´ai une derniere question avant de fermer le theme.
    pour les parametres ayant pour type String, dois je les donner dans le format de la maniere suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Käufer == null ? string.Empty : Käufer
    que signifie cette affectation?
    merci

  17. #17
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    comment definir, et transmettre un parametre s il s agit d une date? ex: 03.08.2015 doit etre donner et souvegarder?
    public Datetime Date { get; set; }??
    comment l´ecrire dans return string.Format{}??
    merci

  18. #18
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Le point d'interrogation dans ce cas sert d'opérateur ternaire.

    Sa forme générale est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (condition) ? (si vrai) : (si faux)
    Un exemple qui se comprend bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // une assignation avec opérateur ternaire
    valeurAbsolue = (entierRelatif < 0) ? (-1 * entierRelatif) : entierRelatif;
     
    // code identique avec un if
    if (entierRelatif < 0)
        valeurAbsolue = -1 * entierRelatif;
    else
        valeurAbsolue = entierRelatif;
    Toutefois dans ton cas d'utilisation tu peux utiliser l'opérateur ??, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("{0}", Käufer ?? String.Empty);
    L'expression "Käufer ?? String.Empty" va renvoyer :
    - Käufer si celui est différent de null,
    - String.Empty si Käufer est null.
    Plus je connais de langages, plus j'aime le C.

  19. #19
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    Merci jopopmk. et s il faudrait donner un parametre qui est une date ex: 03.08.2015; a la sorti?
    merci

  20. #20
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Tu veux parser un objet de type DateTime en string ?
    Si oui je te conseille ce lien qui référence les possibilités de formatage des dates.

    Pour ce qui est de la gestion d'une date null ça va dépendre de comment elles sont gérées. Par exemple certains SGBD n'acceptent pas de date en-dessous du 01/01/1970 (c'est leur minimum), alors que .NET gère des dates jusqu'au 01/01/0001 (valeur que tu peux retrouver dans la pseudo-constante DateTime.MinValue).
    Plus je connais de langages, plus j'aime le C.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. cherche EDI qui supporte la code completion
    Par adel25 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 20/06/2008, 01h32
  2. StructuredTextEditor code completion
    Par *alexandre* dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 07/03/2008, 16h53
  3. JCreator 4 possède "code completion" ?
    Par mohamed amine dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 1
    Dernier message: 15/11/2006, 21h40
  4. Affichage du code complet du programme
    Par felina dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/06/2006, 18h27
  5. [Plugin][phpeclipse] code completion
    Par adel25 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/08/2005, 15h15

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