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 Pascal Discussion :

Création d'un tableau-objet


Sujet :

Langage Pascal

  1. #1
    Futur Membre du Club
    Création d'un tableau-objet
    Bonjour.soir.nuit.Noël !

    J'aimerais créer un objet un peu particulier, semblable en quelques sortes à TStrings et ses descendant. Ce que je voudrais faire précisément, c'est créer un tableau tout en lui octroyant méthodes et propriétés. Je n'ai cependant aucune idée de comment m'y prendre (je m'y connais suffisamment tout de même en POO pour créer un objet "normal").

    Voici ce que je voudrais pouvoir faire avec ledit objet si je trouve comment m'y prendre :

    Code Pascal :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    Tableau[0]:=valeur;
    variable:=Tableau.methode(argument);
    etc.


    Auriez-vous donc l'aimable obligeance de me rediriger vers des ressources expliquant comment s'y prendre (si elles existent, je ne suis pas parvenu à les dénicher) ou me l'expliquer directement ? Merci d'avance !

    En espérant avoir été clair et concis.

  2. #2
    Rédacteur/Modérateur

    C'est simplement une classe avec une propriété par défaut property ... read ... write ...; default;.

    Un exemple avec un tableau dynamique d'entiers :
    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
      TTableau = class
      private
        FItems :array of integer;
     
        function  GetItems(Index: integer): integer;
        procedure SetItems(Index: integer; const Value: integer);
     
      public
        property Items[Index :integer] :integer read GetItems write SetItems; default;
      end;
     
    implementation
     
    function TTableau.GetItems(Index: integer): integer;
    begin
      if Index < Length(FItems)
      then Result := FItems[Index]
      else Result := 0;
    end;
     
    procedure TTableau.SetItems(Index: integer; const Value: integer);
    begin
      if Index > High(FItems) then
        SetLength(FItems, Index +1);
     
      FItems[Index] := Value;
    end;


    Tu y accèdes ensuite indifféremment par Tableau[0] ou Tableau.Items[0].

  3. #3
    Futur Membre du Club
    Merci bien !

###raw>template_hook.ano_emploi###