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 :

Comment mettre Un tableau dans un Objet et le manipuler ?


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2023
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2023
    Messages : 89
    Points : 75
    Points
    75
    Par défaut Comment mettre Un tableau dans un Objet et le manipuler ?
    Bonjour
    Je crée un objet et le manipule sans pb ( un extrait de code mais tout fonctionne, je le libère etc)

    Mon pb est que J'ai Site1 et Site2.
    J'aimerais pouvoir utiliser un tableau Sites : array [0..1] of double en lieu et place de Site1 et Site2.

    Mais je n ai aucune idée de
    1/ comment proceder car j ai essayé mais toujours rencontré des erreurs dans la déclaration des propriétés
    2/ comment y acceder ? J'imagine un truc du genre LesMecs[0].Sites[0] mais je n ai pas pu tester puisque j ai été incapable de le créer.

    Un conseil, un lien, un exemple, je prends tout ce qui pourra me faire avancer car j'ai simplifié le code mais j ai 10 valeurs de 'Site'.
    D'avance merci pour votre aide.

    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
     
    TMec = Class
        FResultat: double;
        FSite1: double;
        FSite2: double;
     
      public
        property FResultat: double read FResultat write FResultat;
        property Site1: double read FSite1 write FSite1;
        property Site2: double read FSite2 write FSite2;
     
      End;
    ...
    LesMec : TObjectlist<TMec>
    ...
    LesMec := TObjectlist<TMec>.create;
     
    UnMec:=TMec.create;
    UnMec.Resultat :=0;
    UnMec.Site1:=33.33;
    UnMec:Site2:=69.69;
    LesMecs.add(UnMec);
     
    ...
     
    memo1.lines.add(formatfloat('0.00',LesMecs[0].UnSite));

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Bonjour, ce type de champ se déclare sur ce modèle. Au besoin, protéger les accesseurs des débordements.
    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
    TMec = Class
        FResultat: double;
        FSites: array[1..10] of double; // ou tableau dynamique au besoin
     
      public
        property Resultat: double read FResultat write FResultat;
        property Sites[index: integer]: Double read getSite write setSite;
     
      End;
     
     
    procedure TMec.setSite(index: integer; Value: Double);
    begin
      FSites[index] := Value;
    end;
     
    function TMec.getSite(index: integer): Double;
    begin
      Result := FSites[index];
    end;
     
    //...
     
    LesMecs := TObjectlist<TMec>.create;
     
    UnMec:=TMec.Create;
    UnMec.Resultat := 0;
    UnMec.Sites[1] := 33.33;
    UnMec:Sites[2] := 69.69;
    LesMecs.Add(UnMec);
     
    ...
     
    memo1.lines.add(formatfloat('0.00',LesMecs[0].Sites[2]));
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2023
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2023
    Messages : 89
    Points : 75
    Points
    75
    Par défaut
    Merci pour cet exemple.
    Toutefois j ai une erreur indicateur de champ ou de methode attendu au niveau du write sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     property Sites[index: integer]: double read getSite write setSite;

  4. #4
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 931
    Points : 1 909
    Points
    1 909
    Par défaut
    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
      
    Type
    TMec = Class
        FResultat: double;
        FSites: array[1..10] of double;
    
      private
        function GetSites(index: integer): Double;
        procedure SetSites(index: integer; Value: Double);
    
      public
        property Resultat: double read FResultat write FResultat;
        property Sites[index: integer]: Double read GetSites write SetSites;
    
      End;
    
    implementation
    
    function TMec.GetSites(index: integer): Double;
    begin
      Result := FSites[index];
    end;
    
    
    procedure TMec.SetSites(index: integer; Value: Double);
    begin
      FSites[index] := Value;
    end;

  5. #5
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2023
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2023
    Messages : 89
    Points : 75
    Points
    75
    Par défaut
    Merci tout fonctionne parfaitement.

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

Discussions similaires

  1. [WD19] Etat sur tableau, comment mettre une image dans une rubrique ?
    Par EriCstoFF dans le forum WinDev
    Réponses: 4
    Dernier message: 28/12/2015, 12h16
  2. Comment mettre un texte dans un tableau
    Par Mounr dans le forum Langage
    Réponses: 3
    Dernier message: 13/10/2009, 15h36
  3. comment mettre un tableau dans une boucle et sur la meme page
    Par pikkolina dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 24/05/2009, 19h21
  4. Réponses: 13
    Dernier message: 03/10/2007, 11h25
  5. COMMENT METTRE 2 CHAMPS DANS LE MEME DBLOOKUPCOMBOBOX
    Par ledevelopeur dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/07/2004, 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