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

Delphi Discussion :

tableau d'éléments structurés?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 54
    Par défaut tableau d'éléments structurés?
    Bonjour à tous,
    Je suis débutant en Delphi et j'essais actuellement de faire un tableau d'éléments structurés:
    En fait ma structure se présente sous cette forme (en espérant qu'elle soit bonne syntaxiquement )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    type mStructure = packed record
             strQuestion : String ;                //libelle de la q°
             intCode : integer;                     //code permettant de vérifier la rép
             tabStrReponses : array of string; //tableau des réponses proposées
             strNomPhoto : String;                //photo associée à la q°
             strCorrection : String;               //correction de la q°
    end;
    Ensuite je dis que le tableau mTabStrTableauGeneral est stucturé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mTabStrTableauGeneral = array of mStructure;
    Voila j'aimerais savoir où je dois mettre ces déclarations et par quelles méthodes on peut remplir ce tableau et extraire des données. Je n'ai pas trouvé d'exemple sur les tutoriels pour les tableaux d'éléments structurés

    Merci d'avances

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut

    En ce qui concerne ta structure, il manque la taille du tableau tabStrReponses dans la structure et également la taille du tableau structuré mTabStrTableauGeneral.

    Je t'ai fais un petit "programme" très très léger qui remplir ton tableau grâce à un bouton Remplir et un autre qui affiche ce qu'on a remplir grâce à un bouton Remplir.

    Voici 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
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Remplir: TButton;
        Afficher: TButton;
        procedure RemplirClick(Sender: TObject);
        procedure AfficherClick(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    
    type mStructure = record
             strQuestion : String ;                //libelle de la q°
             intCode : integer;                     //code permettant de vérifier la rép
             tabStrReponses : array[1..10] of string; //tableau des réponses proposées
             strNomPhoto : String;                //photo associée à la q°
             strCorrection : String;               //correction de la q°
    end;
    
    var
      Form1: TForm1;
      mTabStrTableauGeneral: array[1..10] of mStructure;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.RemplirClick(Sender: TObject);
    var
    i,indice:integer;
    
    begin
    for indice:=1 to 2 do
    begin
     mTabStrTableauGeneral[indice].strQuestion:='Question '+IntToStr(indice);
     mTabStrTableauGeneral[indice].intCode:=indice;
     for i:=1 to 5 do
     mTabStrTableauGeneral[indice].tabStrReponses[i]:='Réponse '+IntToStr(i);
     mTabStrTableauGeneral[indice].strNomPhoto:='NomPhoto '+IntToStr(indice);
     mTabStrTableauGeneral[indice].strCorrection:='Correction '+IntToStr(indice);
    end;
    end;
    
    procedure TForm1.AfficherClick(Sender: TObject);
    var
    i,indice:integer;
    begin
    for indice:=1 to 2 do
    begin
      ShowMessage(mTabStrTableauGeneral[indice].strQuestion);
      ShowMessage(IntToStr(mTabStrTableauGeneral[indice].intCode));
      for i:=1 to 5 do
      ShowMessage(mTabStrTableauGeneral[indice].tabStrReponses[i]);
      ShowMessage(mTabStrTableauGeneral[indice].strNomPhoto);
      ShowMessage(mTabStrTableauGeneral[indice].strCorrection);
    end;
    end;
    
    end.
    J'espère que cela te servira et que c'est ce que tu attendais.
    @+

    PS: Je n'ai pas mis packed record lors de la déclaration de ta structure. Si quelqu'un peut me dire en quoi ce mot Packed est utile, ca serait gentil

  3. #3
    Membre Expert 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
    Par défaut
    Citation Envoyé par ero-sennin
    PS: Je n'ai pas mis packed record lors de la déclaration de ta structure. Si quelqu'un peut me dire en quoi ce mot Packed est utile, ca serait gentil
    F1 est votre ami

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Oui, j'ai lu ceci :

    Citation Envoyé par Aide Delphi
    Quand vous déclarez un type structuré, vous pouvez spécifier le mot réservé packed pour implémenter le stockage compressé des données. Par exemple :

    type TNombres = packed array[1..100] of Real;

    L'utilisation de packed ralentit l'accès aux données et, dans le cas d'un tableau de caractères, nuit à la compatibilité
    (je passe ce qui est avant)

    Je voulais juste savoir ce que ca veut dire : implémenter le stockage compressé des données.
    Si tu as une meilleure explication, je suis prenant

  5. #5
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    Et en utilisant un TList ça ne pourrait pas simplifier (entre autres d'utiliser un tableau dynamique de structures)

  6. #6
    Membre Expert 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
    Par défaut
    essaye de crée une structure par example
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struc=record  //packed
            t:byte;
            s:string[21];//(taille+1) mod 4<>0
            t:array[1..9] of char;
            end;
    par example fait un test avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var  z:struc
    begin
         caption:=inttostr(sizeof(z)); // en premier temp avec packed et 2 éme sans
    end;
    pour voir la différence aussi en taill et en vitesse crée un fichier typé "struc" de 100000 enregist (lire et ecrir)
    bon dev

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Merci edam

    Bon développement !

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/09/2007, 15h58
  2. manipulation d'un tableau d'une structure de donnee
    Par questionvb dans le forum VB.NET
    Réponses: 2
    Dernier message: 19/03/2007, 14h02
  3. Tableau dynamique de structures
    Par beb30 dans le forum C
    Réponses: 13
    Dernier message: 29/04/2006, 12h41
  4. Parcourir tableau d'éléments
    Par magikman dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 20/04/2006, 14h48
  5. Tableau d'éléments de type variable
    Par Drooxy dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2003, 15h20

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