Vider un tableau [Résolu]

cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention - 20 juin 2005 à 13:08 - Dernière réponse : cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention
- 28 juin 2005 à 09:47
Bonjour,



Je cherche une fonction delphi (version 7) qui vide un tableau mais je ne parviens pas à mettre la main dessus.



Quelqu'un a une idée ?

++
Moustachu
Afficher la suite 

11 réponses

Répondre au sujet
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 20 juin 2005 à 17:10
+2
Utile
On doit aussi pouvoir utiliser la fonction FillChar mais seulement pour réinitialiser un tableau :
FillChar(Tableau, SizeOf(Tableau), 0);
C'est plus rapide que de parcourir et réinitialiser chaque élément !

Vider un tableau revient peut-être pour toi au même que de procéder à un redimensionnement :
SetLength(Tableau, 0);

Les mots ont de l'importance...


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Delphiprog
moldov 168 Messages postés mercredi 8 octobre 2003Date d'inscription 10 novembre 2008 Dernière intervention - 20 juin 2005 à 14:03
0
Utile
Salut,



Pour vider ton tableau tu le parcours pour le vider, ou pour lui attribuer une valeurs par defaut.



Bonne Prog
Commenter la réponse de moldov
moldov 168 Messages postés mercredi 8 octobre 2003Date d'inscription 10 novembre 2008 Dernière intervention - 20 juin 2005 à 14:03
0
Utile
Salut,



Pour vider ton tableau tu le parcours pour le vider, ou pour lui attribuer une valeurs par defaut.



Bonne Prog
Commenter la réponse de moldov
cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention - 20 juin 2005 à 14:09
0
Utile
C'est ce que je fais déjà mais c'était pour savoir s'il existait une syntaxe Delphi pour le faire.

++
Moustachu
Commenter la réponse de cs_moustachu
moldov 168 Messages postés mercredi 8 octobre 2003Date d'inscription 10 novembre 2008 Dernière intervention - 20 juin 2005 à 14:16
0
Utile
Salut,



Si tu fais un tableau de type TBaseArray, tu peux utiliser la méthode Clear pour effacer toutes les lignes du tableau.

Si tu utilise pas le type TBaseArray, je pense pas qu'il existe une
fonction pour tous supprimer, mais je peux pas te l'affirmer car je
connais pas assez pour cela.



Bonne Prog
Commenter la réponse de moldov
cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention - 20 juin 2005 à 14:25
0
Utile
Ok merci je vais creuser ce point là

++
Moustachu
Commenter la réponse de cs_moustachu
cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention - 20 juin 2005 à 17:14
0
Utile
Merci de vos réponses.



J'avais pensé au redimensionnement également mais le tableau en
question est passé en paramètre à une procédure et il m'a semblé lire
que dans ce cas on ne pouvait pas appeler SetLength, mais c'est
certainement un point à creuser.

++
Moustachu
Commenter la réponse de cs_moustachu
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 21 juin 2005 à 18:04
0
Utile
Je ne comprend pas ton histoire de parametre passé à une procédure mais tu peux toujours essayer:

Finalize(Tableau);



Extrait de l'aide : " [...] Les tableaux
dynamiques ne peuvent jamais être désalloués à l'aide de la procédure
Dispose, mais vous pouvez les libérer en les transmettant à Finalize.
[...] "



Tout dépent de ce que tu appelle par "vider": ré-initialiser, libérer, détruire, remise à zéro , ...



@ ++

Florent


Si tu ne te plantes pas ......
tu ne poussera jamais
Commenter la réponse de florenth
cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention - 22 juin 2005 à 09:27
0
Utile
Merci de ta réponse.



J'entends par vider : mettre tout les pointeurs à nil dans un tableau par exemple, donc ré-initialiser.



Je vais essayer ton finalize, ils disent que ça libère proprement la mémoire.



Merci

++
Moustachu
Commenter la réponse de cs_moustachu
sokoban 33 Messages postés mardi 4 novembre 2003Date d'inscription 4 novembre 2006 Dernière intervention - 27 juin 2005 à 21:52
0
Utile
Si ton tableau est un tableau dynamique du style :

MonTableau : array of char;

Alors tu peux le réinitialiser avec :

SetLength(MonTableau, 0);

Le Hight(MonTableau) vaudra bien ZERO.

Pour autant, effectivement, le tableau est vidé, pas détruit ni libéré !


Ghislain "Sokoban" Martin
http://perso.wanadoo.fr/sokoban
Commenter la réponse de sokoban
cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention - 28 juin 2005 à 09:47
0
Utile
Bonjour,



J'ai essayé un peu toutes propositions faites. Finalize ne m'a pas vidé
le tableau (peut être une mauvaise utilisation) Quand au SetLength, je
crains que cela ne libère pas convenablement un tableau de TObject (par
exemple)



Le FillChar est bien pratique, merci Delphiprog !



Merci à tous

++
Moustachu
Commenter la réponse de cs_moustachu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.