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

Langage Delphi Discussion :

[TStringList] Ajout impossible...


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Leoxp
    Invité(e)
    Par défaut [TStringList] Ajout impossible...
    Salut tout le monde !

    Je commence par poser mon 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
    function listerVilles : TStringList;
    var
      tmpListe : TStringList;
      i        : integer;
      tmp      : string;
    begin
      tmpListe:=TStringList.Create;
      tmpListe.Clear;
      for i:=1 to 741 Do
      Begin
        tmp:=villes[i][1];
        tmpListe.BeginUpdate;
        tmpListe.Add(tmp);
        tmpListe.EndUpdate;
      End;
      listerVilles:=tmpListe;
      tmpListe.Free;
    end;
    Mon but est tout simple : la fonction "listerVille" doit se charger de renvoyer la liste des villes (constante villes de type array[1..741,1..3]).
    Pour celà je créé une liste intermédiaire avec le constructeur "create", puis j'ajoute avec "add".

    Le problème c'est que malgré mes appels à "add" la liste n'est pas alimentée. J'ai utilisé "begin" et "endupdate" pensant obtenir de meilleurs résultats mais rien...

    Et ce problème vient uniquement de ma liste car quand je fait un appel à "showmessage" avec comme argument "villes[i][1]" j'obtiens bien quelque chose.

    Alors ma question est : faut-il faire appel à une routine spéciale après avoir créé un tableau ? Ou alors est-ce que j'ai loupé quelque chose ?

    Merci d'avance pour vos réponses, quelle qu'elle soit.

    Leo

  2. #2
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    bonjour,
    à vue de nez je dirais
    à remplacer par

    Bon courage !

  3. #3
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Heu a vue de nez, tu alloues, puis tu dé-alloue une liste locale à la fonction, donc après la fonction... plus rien !

    la solution, passer en parametre

    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
    procedure listerVilles( LVilles : TStringList );
    begin
      LVilles.Clear;
    ... TON CODE
    end;
     
     
    Autres part...
    var ListeVilles: tstringlist;
    begin
      ListeVilles := TStringList.Create;
      ListerVilles( ListeVilles );
      // TON TRAITEMENT SUR LES VILLES
      ListeVille.Free;
    end
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  4. #4
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Tout comme a dit TicTacToe, avec en plus le fait que BeginUpdate et EndUpdate ne s'utilisent pas comme tu l'as fait : il faut appeler une fois BeginUpdate avant tous tes traitements (avant ta boucle) et une fois EndUpdate après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure listerVilles(LVilles : TStrings);
    var
      i : integer;
      tmp : string;
    begin
      LVilles.BeginUpdate;
      LVilles.Clear;
      for i := 1 to 741 do
        LVilles.Append(villes[i][1]);
      LVilles.EndUpdate;
    end;
    N.B. : J'ai utilisé TStrings au lieu de TStringList comme type de paramètre formel : cela ajoute de la flexibilité à ton code sans perdre une miette de puissance c'est une bonne habitude à prendre
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/07/2010, 19h31
  2. Ajout impossible en mode déconnecté
    Par demando77 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 27/01/2009, 23h16
  3. Ajout impossible dans un formulaire filtré !
    Par Stegue dans le forum IHM
    Réponses: 5
    Dernier message: 13/03/2008, 22h56
  4. Ajout impossible avec 3 tables
    Par vid52 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 27/11/2007, 14h48
  5. Ajout impossible dans un formulaire
    Par holoaccess dans le forum IHM
    Réponses: 1
    Dernier message: 11/04/2007, 14h29

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