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

Windows Forms Discussion :

[c#] tableau de string dans un tableau


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Points : 154
    Points
    154
    Par défaut [c#] tableau de string dans un tableau
    Hello,

    J'ai un pitit problème en essayant programmer une fonction de façon propre.

    Avant tout, j'ai déclaré et initialisé un tableau de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private static string[][] file_extension;
    ...
    file_extension = new string[][]
    {
        new string[] {},
        new string[] { "mkv", "avi", "mpg", "mpeg", "wmv", "divx", "mov", "ts", "mp4"},
        new string[] { "mp3", "flac", "wma", "ogg", "mpc", "wav"},
        new string[] { "jpg", "jpeg", "png", "bmp", "gif", "tiff"},
        new string[] { "srt", "sub", "ssa"}
    };
    Bon déja la j'ai pas trouvé moyen de l'initaliser directement à la déclaration et donc encore moins de le mettre en constante.

    Mais le plus gros problème survient par la suite, quand j'essaie de détecter dans quel sous-tableau se trouve l'extension donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for (int type = 1; type < file_extension.Length; type++)
    {
        for (int extension = 0; extension < file_extension[type].Length; extension++)
        {
            if (file_extension == file_extension[type][extension])
            {
                return type;
            }
        }
    }
    return 0;
    la il me dit que pour la 2ème boucle, je ne peux pas faire de length (sur un tableau de caractères).

    Y-a-t'il un moyen de corriger ça ou peut-etre d'écrire de façon plus propre ?

    Merci d'avance pour votre aide !!!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    if (file_extension == file_extension[type][extension])
    ben là tu compares un tableau de tableaux de string avec une string, je vois mal comment ça pourrait marcher...
    Mais de toutes façons les tableaux ne sont pas très pratiques pour ce que tu veux faire... il vaudrait mieux utiliser des collections et/ou des dictionnaires:
    Code C# : 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
     
    // Initialisation
    Dictionary<string, List<string>> file_types = new Dictionary<string, List<string>>();
     
    List<string> lst = new List<string>();
    lst.AddRange(new string[] { "mkv", "avi", "mpg", "mpeg", "wmv", "divx", "mov", "ts", "mp4"});
    file_types.Add("Video", lst);
     
    lst = new List<string>();
    lst.AddRange(new string[] { "mp3", "flac", "wma", "ogg", "mpc", "wav"});
    file_types.Add("Sound", lst);
     
    lst = new List<string>();
    lst.AddRange(new string[] { "jpg", "jpeg", "png", "bmp", "gif", "tiff"});
    file_types.Add("Image", lst);
     
    lst = new List<string>();
    lst.AddRange(new string[] { "srt", "sub", "ssa"});
    file_types.Add("Subtitles", lst);
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Recherche
    public string GetFileType(string ext)
    {
        foreach(string key in file_types.Keys)
        {
            if (file_types[key].Contains(ext))
            {
                return key;
            }
        }
        return null;
    }

  3. #3
    Membre habitué Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Points : 154
    Points
    154
    Par défaut
    Merci pour ces corrections !

    je n'ai jamais employé ce concept de collections. En parcourant la msdn, je vois comment ça fonctionne sans problème mais je ne comprend pas vraiment la différence entre par exemple une list et un tableau, lequel vaut-il mieux d'employer dans quels cas ?

    Merci d'avance pour votre aide !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Une liste fonctionne comme un tableau de taille variable. Quand tu crées un tableau, tu spécifies sa taille et tu ne peux pas la changer. Si tu veux y mettre plus d'éléments, tu en crées un nouveau, plus grand, dans lequel tu recopies le premier tableau. Pas très pratique... avec une collection (il y en a plusieurs sortes) tu n'as pas à te préoccuper de la taille du tableau. Tu ajoutes et supprimes les éléments avec les méthodes Add et Remove.
    Un dictionnaire est une collection qui permet d'associer une clé à chaque élément du tableau. Tu peux spécifier le type de clé et de valeur, et utiliser la clé pour accéder à un élément sans connaître son index.

  5. #5
    Membre habitué Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Points : 154
    Points
    154
    Par défaut
    oki doki je crois que je vais aimer les collections, merci beaucoup pour ton aide !!

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

Discussions similaires

  1. Mettre le contenu d'une variable String dans un tableau de String
    Par patriot dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 31/05/2011, 15h25
  2. Réponses: 4
    Dernier message: 03/05/2006, 14h30
  3. String dans un tableau int
    Par maminova77 dans le forum C++
    Réponses: 18
    Dernier message: 30/04/2006, 09h22
  4. Un string dans un tableau de deux dimensions...
    Par FinalSpirit dans le forum C++
    Réponses: 5
    Dernier message: 15/01/2006, 14h29
  5. Ranger un tableau de String dans ma HashMap
    Par jeyce dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 26/08/2004, 22h41

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