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

Langage Delphi Discussion :

array of array


Sujet :

Langage Delphi

  1. #1
    Membre actif Avatar de oneDev
    Homme Profil pro
    dilettant
    Inscrit en
    Mars 2019
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : dilettant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 214
    Points : 223
    Points
    223
    Par défaut array of array
    Bonjour,

    Je suis en train de faire de tests.
    J'utilise actuellement ce code qui fonctionne correctement

    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
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      ListWords(['aa', 'bb', 'cc', 'dd']);
      ListWords(['01', '02']);
      ListWords(['AA', 'BB', 'CC', 'DD', 'EE', 'FF']);
    end;
     
    procedure TForm1.ListWords(lst: array of variant);
    var
      i: Integer;
    begin
      for i := Low(lst) to High(lst) do
        ShowWord(lst[i]);
    end;
     
    procedure TForm1.ShowWord(str: variant);
    begin
      AllocConsole;
      Writeln(str);
    end;
    J'aurais maintenant aimer faire la même chose mais en remplacer la liste de string par une liste de liste de string.
    L'idée était d'utiliser ce genre de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      ListWords([['aa', 'bb', 'cc'], ['dd']]);
      ListWords(['01'], ['02']]);
      ListWords([['AA', 'BB', 'CC', 'DD'], ['EE', 'FF']]);
    end;
    Je n'arrive pas à trouver comment faire, je ne sais même pas si c'est possible.
    Ce sera toujours des string qui seront passées. les array auront toujours des longueurs variables.

    Merci de vos conseils.

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    pourquoi des variants ?

    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
     
    procedure Test(const aa: TArray<TArray<string>>);
    var
      i, j: Integer;
    begin
      for i := 0 to High(aa) do
      begin
        for j := 0 to High(aa[i]) do
          ShowMessage(aa[i, j]);
      end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Test([['un', 'deux', 'trois'],['one', 'two', 'three']]);
    end;
    ou la version sans Generic

    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
     
    type
      TAASTring = array of array of string;
     
    procedure Test(const aa: TAAString);
    var
      i, j: Integer;
    begin
      for i := 0 to High(aa) do
      begin
        for j := 0 to High(aa[i]) do
          ShowMessage(aa[i, j]);
      end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Test([['un', 'deux', 'trois'],['one', 'two', 'three']]);
    end;

  3. #3
    Membre actif Avatar de oneDev
    Homme Profil pro
    dilettant
    Inscrit en
    Mars 2019
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : dilettant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 214
    Points : 223
    Points
    223
    Par défaut
    Bonjour Paul,

    Désolé, j'ai oublié de préciser que j'étais sous Delphi 7.

    J'avais testé des trucs de ce genre là, mais sans succès.
    J'ai repris ton 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
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      ListWords([['un', 'deux', 'trois'],['one', 'two', 'three', 'four']]);
    end;
     
    procedure TForm1.ListWords(lst: TAASTring);
    var
      i: Integer;
    begin
      for i := Low(lst) to High(lst) do
        ShowWord(lst[i]);
    end;
     
    procedure TForm1.ShowWord(str: string);
    begin
      AllocConsole;
      Writeln(str);
    end;
    Le compilateur bloque juste après ListWords([['un',.
    J'ai les erreurs suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [Erreur] Main.pas(32): Type ordinal requis
    [Erreur] Main.pas(32): Types incompatibles : 'Integer' et 'String'
    [Erreur] Main.pas(32): Types incompatibles : 'Integer' et 'String'
    [Erreur] Main.pas(32): Types incompatibles : 'Integer' et 'String'
    [Erreur] Main.pas(40): Types incompatibles : 'String' et 'dynamic array'
    [Erreur fatale] MyProject.dpr(5): Impossible de compiler l'unité utilisée 'Main.pas'

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    en effet, il faut un Delphi récent pour pouvoir compiler des tableaux dynamiques déclarés en ligne.

    je ne pense pas que ce soit faisable sous D7.

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    utilise les TStrings, ou TList de TStrings
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var
      diskList: TList
      FileList: TstringList
      i,j: Integer;
      FileName:String;
    begin
      DiskList := TList.Create;
      for i:=1 to StrToInt(num_Of_Disks) do begin
          FileList:=TStringList.Create;
          DiskList.Add(FileList)
          For j := to xNombrFile do
              FileList.Add(FileName);
    End;
    mais, pourquoi tu dois utiliser cette méthode, tu récupère tes strings d'une base, d'un fichier( txt, xml,...)???

Discussions similaires

  1. [XSL][ARRAY]
    Par miloud dans le forum XMLRAD
    Réponses: 4
    Dernier message: 02/10/2003, 15h46
  2. Erreur "size array"
    Par boobob dans le forum C
    Réponses: 3
    Dernier message: 06/08/2003, 10h18
  3. TStringList en array of string
    Par JediKerian dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2003, 15h37
  4. Réponses: 2
    Dernier message: 23/02/2003, 00h49
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

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