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 :

Appel fonction qui retourne TStrinList


Sujet :

Delphi

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Par défaut Appel fonction qui retourne TStrinList
    Bonjour

    Je declare dans les uses une form UMesFonctions qui contient des fonctions perso
    Je declare dans cette meme form dans Private des TSTringList (dont perm,perm_rme).

    Dans UMesFonctions j ai la function suivante (juste pour essayer l appel...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function CalculeMoyenne(perm:TstringList;Periode:Integer):TstringList;
      var
        ListRetour : TstringList;
      begin
        ListRetour:=TstringList.create;
        ListRetour.Add('abc'+inttostr(Periode));
      end;
    J appelle depuis mon form pricipal avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      perm_rme :=TstringList.create;
      perm_rme:=CalculeMoyenne(perm,5);
      memo1.lines.add(perm_rme[0]);
    end;
    Mais au lieu d afficher abc5 dans mon memo cela me declenche EAccessViolation.

    Pourriez vous m indiquer ce que j ai mal fait svp.
    Merci

  2. #2
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    Citation Envoyé par sp2308 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function CalculeMoyenne(perm:TstringList;Periode:Integer):TstringList;
      var
        ListRetour : TstringList;
      begin
        ListRetour:=TstringList.create;
        ListRetour.Add('abc'+inttostr(Periode));
      end;
    ta fonction ne retourne rien

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Parce qu'en gros, c'est l'inverse de ce que tu as codé

    A moins que tu fasses un Result := ListRetour, cette variable ne sert à rien ! Crée directement Result.

    Dans l'appel, ça ne sert à rien non plus de créer une instance de TStringList pour perm_rme puisque tu l'écrases par le retour de la fonction. Par contre. tu dois la libérer lorsque tu n'en as plus besoin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function CalculeMoyenne(perm:TstringList;Periode:Integer):TstringList;
    begin
      Result := TstringList.create;
      Result.Add('abc'+inttostr(Periode));
    end;
     
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      perm_rme := CalculeMoyenne(perm,5);
      memo1.lines.add(perm_rme[0]);
      perm_rme.Free;
    end;

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Par défaut
    Merci beaucoup.

    Toutefois une autre question.

    Du coup, est il possible de retourner plusieurs TstringList ou autre, de même ou differents type ?

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    La fonction ne retourne qu'un seul résultat, mais tu peux passer des paramètres var ou out.
    (On pourrait aussi imaginer retourner un array of TStringList, mais bon )

    ps: TStringList est un type bien défini.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Par défaut
    merci pour ces reponses

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

Discussions similaires

  1. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  2. [PL/SQL] Fonction qui retourne plusieurs valeurs
    Par Loko dans le forum Oracle
    Réponses: 2
    Dernier message: 07/12/2004, 09h43
  3. Réponses: 7
    Dernier message: 03/12/2004, 12h40
  4. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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