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 :

Parcourir tous les éléments d'un record


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 78
    Points
    78
    Par défaut Parcourir tous les éléments d'un record
    Bonjour,
    mon appli dispose de tableau de record selon :
    Tab[i].parametre1:=....
    Je souhaiterais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Tab[i].parametre1:=Tab[i+1].parametre1;
    Tab[i].parametre2:=Tab[i+1].parametre2;
    ...//pour tous les paramètres
    Existe t'il un moyen rapide et efficace de parcourir tous les éléments d'un record ?
    est ce que Tab[i]:=Tab[i+1] fonctionne ? en tout cas, delphi ne me jette pas lorsque je le fais.
    merci pour tout aide
    Seb

  2. #2
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 559
    Points : 3 951
    Points
    3 951
    Par défaut
    Salut

    Un petit tour dans l'aide de Delphi t'aurait renseigné :
    Citation Envoyé par F1 Delphi 7
    Un enregistrement (appelé aussi structure dans certains langages) représente un ensemble de données hétérogènes. Chaque élément est appelé un champ ; la déclaration d'un type enregistrement spécifie le nom et le type de chaque champ. Une déclaration de type enregistrement a la syntaxe suivante :

    type nomTypeEnregistrement = record
    listeChamp1: type1;
    ...
    listeChampn: typen;
    end

    où nomTypeEnregistrement est un identificateur valide et où chaque type désigne un type, et chaque listeChamp est un identificateur valide ou une liste d'identificateurs délimitée par des virgules. Le point-virgule final est facultatif.

    Par exemple, la déclaration suivante crée un type enregistrement nommé TDateRec.

    type
    TDateRec = record
    Annee: Integer;
    Mois: (Jan, Fev, Mar, Avr, Mai, Jun,
    Jul, Aou, Sep, Oct, Nov, Dec);
    Jour: 1..31;
    end;

    Chaque TDateRec contient trois champs : une valeur entière appelée Annee, une valeur d'un type énuméré appelé Mois et une autre valeur entière comprise entre 1 et 31 appelée Jour. Les identificateurs Annee, Mois et Jour sont des noms de champs de TDateRec qui se comportent comme des variables. Néanmoins, la déclaration de type TDateRec n'alloue pas de mémoire pour les champs Annee, Mois et Jour ; la mémoire est allouée quand vous instanciez l'enregistrement, de la manière suivante :

    var Record1, Record2: TDateRec;

    Cette déclaration de variable crée deux instances de TDateRec, appelées Record1 et Record2.

    Vous pouvez accéder aux champs de l'enregistrement en qualifiant le nom de champ avec le nom de l'enregistrement :

    Record1.Annee := 1922;
    Record1.Mois := Nov;
    Record1.Jour := 26;

    Ou en utilisant une instruction with :

    with Record1 do
    begin
    Annee := 1922;
    Mois := Nov;
    Jour := 26;
    end;

    Vous pouvez alors copier les valeurs des champs de Record1 dans Record2 :

    Record2 := Record1;

    Comme la portée d'un nom de champ est limitée à l'enregistrement dans lequel il est spécifié, vous n'avez pas à vous préoccuper de conflits entre les noms de champ et des noms de variable.

    Au lieu de définir des types d'enregistrement, vous pouvez utiliser directement la construction record ... dans des déclarations de variable :

    var S: record
    Nom: string;
    Age: Integer;
    end;

    Cependant, une telle déclaration annule complètement les avantages des enregistrements, à savoir éviter le codage répétitif de groupes de variables identiques. De plus, des enregistrements déclarés séparément avec cette méthode ne sont pas compatibles pour l'affectation même si leur structure est identique.
    D'où la solution à ton problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Tab[i] := Tab[i+1]; // C'est tout
    ...
    Ceci dit, d'une manière générale, fais attention à ce type de facilité si ton record contient des pointeurs. A priori, pas de souci à te faire dans le cas présent (simple décalage dans un tableau).

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 78
    Points
    78
    Par défaut
    merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/07/2015, 15h18
  2. parcourir tous les éléments de mon formulaire
    Par Henry9 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/08/2007, 13h22
  3. [C#] Parcourir tous les TextBox d'un Panel
    Par Oberown dans le forum ASP.NET
    Réponses: 7
    Dernier message: 18/01/2005, 14h04
  4. Réponses: 15
    Dernier message: 21/06/2004, 16h52

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