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 :

fonction avec en retour un tableau


Sujet :

Delphi

Vue hybride

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Par défaut fonction avec en retour un tableau
    Bonjour à tous
    Meilleurs Voeux.

    Comment realiser une fonction de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    function Test: [0..20] of String; 
    begin
      Result[0]:= 'Test 1';
      Result[1]:= 'Test 2';
    end;



    Merci de votre Aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Salut;

    oh que oui, ta fonction aura cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function chaine(var t : array of string) : string;
    begin
      // traitement
    end;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Par défaut
    Bonjour Just-Soft,

    merci pour ta réponse.


    Je fait un essai pour récuperer la fonction



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    function TForm1.chaine(var t : Array  of String) :String ;
    begin
      t[0]:= ' Essai 1';
      t[1]:= ' Essai 2;
      t[2]:= ' Essai 3;
    end;


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
      ShowMessage(Chaine[0]);  // Erreur
      ShowMessage(Chaine[1]);  // Erreur

    Comment faire pour récupérer le tableau de la fonction

    Merci

  4. #4
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    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
    29
    30
    31
    32
     
        montab:array[1..2]of string;
        function tab(T:array of string;indice:integer): string;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
        function TForm1.tab(T:array of string;indice:integer): string;
        var maxT:integer;
        begin
        T[1]:='essai1';
        T[2]:='essai2';
        ......si T>2
        case indice of
        1:result:=T[1];
        2:result:=T[2];
    //etc si T>2
        end;
     
        end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    caption:=tab(montab,2);
    end;
    Je ne vois pas trop l'intérêt de la chose...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Par défaut
    Bonjour Archimède,

    merci pour ta réponse.

    Je crois que je me suis mal exprimer.


    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
     
    function TDM.RecupProc (s:String) :Array [0..2] of String;
    const
       cstSQL =   ' SELECT'
                     +'  COD_DON' 
                     +' FROM'
                     +'   %S';
    begin
       Result[0]:= 'Annuler';
        with TjvUIBQuery.Create(Nil) do
        begin
          try
            Transaction:= TjvUIBTransaction.Create(Nil);
            Transaction.DataBase:= jvBase;
            try
              SQL.Text:= Format(cstSQL,[S]);
              Open;
              if not eof then 
              begin  
                 Result[1]:= 'Ok';  // pas erreur donc tableau index 0 = ok  
                 Result[0]:= Fields.ByNameAsString['COD_DON'];   // retour cod           
              end;
              Close(etmCommit);
            Except
               Transaction.RollBack;
               Result[0]:= 'Annuler'; // Erreur donc tableau index 0 = Annuler
            end;  // except
     
          finally
            Transaction.Free;
            Free;
          end;   // finally
        end;  // with
    end;
     
     
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    var 
      T : Array [0..1] of String;
    begin
      T:= if DM.RecupProc('DON');
     
      if T[0] = 'TRUE' then
        ShowMessage( T[1])  // tout est ok donc mon cod_don
      else
        ShowMessage('Erreur ');
    end;
    avoir une fonction qui retour un tableau voila

    merci

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 933
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 933
    Par défaut
    Beaucoup d'ilogisme dans tout cela!

    Ce que propose Just-Soft est correct! Bien sûr la première chose à faire dans le traitement est de fixer la taille du tableau par un SetLength. Par contre, le Result sous forme de string n'a aucune raison d'être.

    La gestion du résultat est elle catastrophique!
    Result[0] := 'Annuler'
    Result[1] := 'Ok'
    T[0] = 'TRUE'


    Voici juste un exemple pour récupérer un tableau de taille fixe, mais l'ensemble n'est pas bien clair:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Type
      TRecup = array[0..1] of string;
     
    function TDM.RecupProc (s:String) :TRecup;

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 6
    Dernier message: 31/03/2008, 09h27
  3. Réponses: 11
    Dernier message: 25/03/2008, 23h12
  4. Fonction avec un tableau en retour
    Par viny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 28/09/2006, 22h00
  5. [XSLT] fonction avec retour
    Par goth dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/02/2006, 23h49

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