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

Lazarus Pascal Discussion :

Comment déclarer une fonction publique ? [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut Comment déclarer une fonction publique ?
    Bonjour tout le monde.

    Je veux construire la fonction publique suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public
        Function SOMDOM(Table1:TDataset):real ;
        var i:integer;
      begin
      ............
      ...........
        end;
      end;
    mais j'ai le message d'erreur suivant : "identifier" expected but "begin" found".
    Aidez-moi s.v.p !

    Merci.

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,

    Il ne faut pas placer l'implémentation du code dans la partie interface qui est purement déclarative...

    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
    interface
    type
      TMaClasse = class(ClasseParente)
      public
        Function SOMDOM(Table1:TDataset):real ;
      end;
    //...
    implementation
     
    function TMaClasse.SOMDOM(Table1:TDataset):real ;
    var
      i: integer;
    begin
      ............
      ...........
    end;
    C'est du basique, il faudrait regarder les docs Lazarus voire Delphi...
    Philippe.

  3. #3
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut
    D'accord mais lors de l'appel de la fonction


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Button1Click(Sender: TObject);
    var v:real;
    begin
      v:=TFonct.SOMDOM (Ventes);
    end;
    voila le message surgissant: "Only class methods, class properties, and class variables can be referred with class references.
    excusez moi je suis nul en fonctions et procédures.

  4. #4
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par FOCUS77 Voir le message
    D'accord mais lors de l'appel de la fonction


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Button1Click(Sender: TObject);
    var v:real;
    begin
      v:=TFonct.SOMDOM (Ventes);
    end;
    voila le message surgissant: "Only class methods, class properties, and class variables can be referred with class references.
    excusez moi je suis nul en fonctions et procédures.
    L'erreur ici est de préfixer SomDom par TFonct : le compilateur s'attend non pas à travailler avec une instance de de TFonct (par exemple MyFonct de type TFonct) mais avec la classe elle-même : c'est pourquoi il ne trouve pas parmi les méthodes, propriétés et variables de classe une qui s'appellerait TFonct.

    Plusieurs solutions :
    1. Déclaration classique d'une fonction - Vous déclarez dans la partie interface de votre unité votre fonction dans une section type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function SOMDOM(Table1:TDataset):real;
    Dans la partie implementation, vous définissez votre fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function SOMDOM(Table1:TDataset):real;
    begin
      // votre code ici
    end;
    L'appel se fera sans préfixe et la fonction est publique

    2. Déclaration au sein d'une classe - Vous déclarez dans la partie interface de votre unité votre fonction dans une classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    type
      TMyClass = class
          private
            // vos déclarations privées
         public 
           function SOMDOM(Table1:TDataset):real;
          // vos autres déclarations publiques...
      end;
    Dans la partie implementation, vous définissez votre fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function TMyClass.SOMDOM(Table1:TDataset):real;
    begin
      // votre définition
    end;
    Après création de votre classe (instance appelée MyClass, par exemple), vous pourrez utiliser la fonction dans une partie de votre code :

    ...
    X := MyClass.SOMDOM(TableEnCours);
    ...

    Comme votre fonction est déclarée dans la partie public de votre classe TMyClass, elle sera publique

    Si tout cela vous semble du charabia, c'est que je m'exprime mal ou/et que vous devriez commencer par un cours de base comme celui excellent que propose Eric Thirion :
    http://lazarus.developpez.com/cours/...et/?page=pg_01

    Bonne continuation

    NB : Il me paraît étrange qu'une fonction prenne ainsi un Dataset en paramètres...
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  5. #5
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut
    Salut à tous

    Donc cette fonction est composée de 2 paramètres un Dataset et un numéro de colonne.
    Elle sert à calculer la somme d'une colonne de type réel ou entier.

    et voilà son 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
    type
      TFonct = class
        Function FSUM(Dataset:TDataset;Col:integer):real ;
      end;  
     
     
     
    var
      Form1: TForm1; Fonct:TFonct; s:real; Col:integer; 
     
     
     
    Function TFonct.FSUM(Dataset:TDataset;Col:integer):real ;
    begin
      Dataset.first; s:=0;
      while not Dataset.eof do
      if not Dataset.eof then
      begin
       s:=s+Dataset.Fields[Col].AsFloat ;
       Dataset.Next ;
      end;
    end;    
     
     
    procedure TForm1.ExecClick(Sender: TObject);
     
    begin
      Fonct.FSUM(ventes,6) ;
      ShowMessage(floattostr(s));
    end;
    merci à vous tous.

  6. #6
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    [QUOTE=FOCUS77;8175795]

    Je me permets quelques remarques (en dehors du fait qu'il y a des manières plus efficaces de faire la somme avec des fichiers) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    type
      TFonct = class
        Function FSUM(Dataset:TDataset;Col:integer):real ; 
      end;
    Si la classe ne contient que cette fonction, il est préférable de définir la fonction de manière autonome !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var
      Form1: TForm1; Fonct:TFonct; s:real; Col:integer;
    Il faut éviter au possible les variables globales, sources de confusion et d'erreurs : celles-ci pourraient facilement intégrer votre fonction. Ici, par exemple, étant donné la suite du code, la variable Col est inutile (voire nuisible) puisque jamais utilisée : la variable Col utilisée plus loin est la variable locale fournie par l'en-tête de la fonction ! De même, la variable s est tout aussi inutile puisqu'elle joue le rôle de Result (toujours définie pour une fonction).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Function TFonct.FSUM(Dataset:TDataset;Col:integer):real ;
    begin
      Dataset.first; s:=0;
      while not Dataset.eof do
      if not Dataset.eof then
      begin
       s:=s+Dataset.Fields[Col].AsFloat ;
       Dataset.Next ;
      end;
    end;
    Votre fonction ne renvoie aucune valeur si bien que le compilateur va vous avertir que la valeur de retour est indéterminée On devrait avoir une ligne du genre :
    Il suffit de remplacer tous les s totalement inutiles par Result...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.ExecClick(Sender: TObject);
    begin
      Fonct.FSUM(ventes,6) ;
      ShowMessage(floattostr(s));
    end;
    Votre fonction n'est pas une fonction utile puisque son résultat n'est pas exploité : il s'agit d'une procédure "camouflée". L'ensemble fonctionne parce qu'une fonction peut voir son résultat (ici par ailleurs indéterminé) être perdu sans déclencher de protestation et que vous avez calculé la somme à partir d'une variable spécifique (s).
    Il suffirait de remplacer s par Result dans la fonction et de remplacer les deux lignes de ExeClick par une seule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ShowMessage(FloatToStr(FSUM(ventes, 6)));
    Si le préfixe Fonct a disparu, c'est que j'ai préféré définir une fonction isolée sans faire intervenir de classe. En gardant la classe, ce qui est toujours possible, on doit la créer avec Create et la détruire avec Free, sinon on aura une erreur de réservation de mémoire ou une fuite de mémoire...

    Franchement, je vous encourage à faire des essais comme vous le faites déjà, mais vous devriez cependant écouter le conseil de vous astreindre à une étude d'un cours complet pour maîtriser ces notions.

    Bon courage !
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  7. #7
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    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 556
    Points : 3 924
    Points
    3 924
    Par défaut
    Salut

    J'en rajoute une couche: avant d'entreprendre d'accéder aux bases de données, il vaut mieux maîtriser les bases tout court...
    Dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Function TFonct.FSUM(Dataset:TDataset;Col:integer):real ;
    begin
      Dataset.first; s:=0;
      while not Dataset.eof do
      if not Dataset.eof then
      begin
       s:=s+Dataset.Fields[Col].AsFloat ;
       Dataset.Next ;
      end;
    end;
    le if est redondant et totalement inutile, le while ayant la fonction d'un if avec itération (en quelque sorte), cela me laisse immédiatement penser à des lacunes. Le code a été corrigé par gvasseur58 sans commentaire à ce sujet. Le code correct est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function TFonct.FSUM(Dataset:TDataset;Col:integer):real ;
    begin
      Dataset.first; s:=0;
      while not Dataset.eof do
      begin
       s:=s+Dataset.Fields[Col].AsFloat ;
       Dataset.Next ;
      end;
    end;
    Le reste était correct.

    Pour répéter: Il existe de nombreux tutoriels dont un d'initiation que j'ai traduit sur le Wiki de Free Pascal. Cependant, ne vous découragez pas.

    @+ et bon courage

    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."

  8. #8
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut
    Bonjour à tous
    Tout d'abord merci pour votre aide.
    Donc notre fonction sera construite dans cette ordre.

    1-Déclaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    type
      TFonct = class
        Function getFSUM(Dataset:TDataset;Col:integer):real ; //le nom de la fonction doit commencer
      end;                                                                     //par get pour qu'elle puisse lire les valeurs '  getFSUM:=s;'
    2-Implémentation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function TFonct.getFSUM(Dataset:TDataset;Col:integer):real ;
    var s:real;
    begin
      Dataset.first; s:=0;
      while not Dataset.eof do
      begin
       s:=s+Dataset.Fields[Col].AsFloat ;
       Dataset.Next ;
      end;
      getFSUM:=s;
    end;
    3-Instantialisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var
      Form1: TForm1; Fonct:TFonct;
    4-Exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.ExecClick(Sender: TObject);
    begin
      ShowMessage(floattostr(Fonct.getFSUM(ventes,6)));
    end;
    merci à tous.

  9. #9
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    [QUOTE=FOCUS77;8176959]
    1-Déclaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    type
      TFonct = class
        Function getFSUM(Dataset:TDataset;Col:integer):real ; //le nom de la fonction doit commencer
      end;                                                                     //par get pour qu'elle puisse lire les valeurs '  getFSUM:=s;'
    Le commentaire est erroné : le préfixe "get" n'est qu'une convention, mais agréable pour la relecture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function TFonct.getFSUM(Dataset:TDataset;Col:integer):real ;
    var s:real;
    begin
      Dataset.first; s:=0;
      while not Dataset.eof do
      begin
       s:=s+Dataset.Fields[Col].AsFloat ;
       Dataset.Next ;
      end;
      getFSUM:=s;
    end;
    Encore une fois, la variable s est inutile. Il existe une variable "cachée" Result qui est très pratique. La même fonction s'écrira donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function TFonct.getFSUM(Dataset:TDataset;Col:integer):real ;
    // fonction plus lisible, non ?
    begin
      Dataset.first; 
      Result := 0;
      while not Dataset.eof do
      begin
         Result:=Result+Dataset.Fields[Col].AsFloat ;
         Dataset.Next ;
      end;
    end;
    La fonction fait le même travail : c'est garanti

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var
      Form1: TForm1; Fonct:TFonct;
    Plutôt que de déclarer Fonct à l'extérieur de TForm1, il vaut mieux la déclarer dans la partie public de cette fiche. La multiplication des variables globales est une plaie. D'ailleurs, puisque le choix a été fait d'inclure la fonction dans une classe (je répète qu'une fonction simple dans ce cas aurait été un choix préférable), quand vas-tu créer une instance de cette classe et quand vas-tu la libérer ? [Rappel : c'est obligatoire !]

    En incluant la classe dans la fiche, on créera l'instance dans la méthode OnCreate [ex: Fonct := TFonct.Create] et on la libèrera dans la méthode OnDestroy [Fonct.Free].

    On avance, on avance

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  10. #10
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    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 556
    Points : 3 924
    Points
    3 924
    Par défaut
    Salut

    J'ai écrit une connerie alors je rectifie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Function TFonct.FSUM(Dataset:TDataset;Col:integer):real ;
    var
      aField: TField;
    begin
      aField := Dataset.Fields[Col];
      Dataset.first; Result :=0;
      while not Dataset.eof do
      begin
       Result := Result + aField.AsFloat ;
       Dataset.Next ;
      end;
    end;
    Ce sera mieux. Désolé, j'ai répondu vite fait à midi pendant la pause déjeuner... L'emploi de la variable locale est une très légère optimisation.

    @+

    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."

  11. #11
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par e-ric Voir le message
    Ce sera mieux. Désolé, j'ai répondu vite fait à midi pendant la pause déjeuner... L'emploi de la variable locale est une très légère optimisation.
    Salut e-ric,

    Je n'ai pas fait mieux, car je ne me suis même pas inquiété du contenu du code avec le test if en trop .
    Mais il faut dire qu'il y avait du boulot et que de traiter un problème à la fois avait sans doute des vertus pédagogiques.

    @+
    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  12. #12
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut
    Salut gvasseur58

    j'ai lu votre correction et je vais l'appliquer. Vous avez tout à fait raison.

    Donc la méthode la plus simple est:

    1-DECLARATION:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    uses
      Classes, SysUtils, sqldb, db, IBConnection, FileUtil, Forms, Controls,
      Graphics, Dialogs, DBGrids, Grids, DbCtrls, StdCtrls, EditBtn;
      Function FSUM(Dataset:TDataset;Col:integer):real ; 


    2-IMPLEMENTATION:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function FSUM(Dataset:TDataset;Col:integer):real ;
    begin
      Dataset.first; Result:=0;
      while not Dataset.eof do
      begin
       Result:=Result+Dataset.Fields[Col].AsFloat;
       Dataset.Next ;
      end;
    end;
    3-EXECUTION:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       ShowMessage(Floattostr(FSUM(ventes,1)));
    end;
    On peut même appeler cette fonction depuis n'importe quel Form.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm2.Button1Click(Sender: TObject);
    begin
     ShowMessage(Floattostr(unit1.FSUM(Tiers,0)));
    end;
    il faut dire que vous m'avez appris beaucoup de nouvelles choses! et je vous en remercie.
    je remercie tous les autres qui ont participé a cette discussion.

    FOCUS.

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

Discussions similaires

  1. [JavaScript] Comment correctement déclarer une fonction?
    Par Lcf.vs dans le forum Contribuez
    Réponses: 17
    Dernier message: 19/12/2014, 17h50
  2. [AC-2007] Comment déclarer une variable publique à partir d'un formulaire ?
    Par Dr Rodney Mckay dans le forum IHM
    Réponses: 2
    Dernier message: 27/07/2009, 21h30
  3. Réponses: 1
    Dernier message: 22/08/2007, 23h40
  4. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  5. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24

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