Variable locale et globale

Résolu
Samou85 Messages postés 46 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 7 octobre 2009 - 22 sept. 2009 à 11:14
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 22 sept. 2009 à 14:25
bonjour à tous!

j'ai crée une procedure qui rend comme résultat un tableau dynamique "TableauCc", dans le corps de cette preocedure j'ai mis l'instruction :

procedure Algorithme1(ListeAdj:PListe;TabTraiT:Array of Integer;n:integer;Var TableauCc:Array of Integer);
Var
....
Begin

SetLength(TableauCc,6);
.
..
...
end;
il affiche: type incompatible sur la ligne "SetLength(TableauCc,6)" comme erreur et je ne vois pas pourquoi??

5 réponses

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
22 sept. 2009 à 11:27
Pour effectuer un passage de paramètres dans une procédure ou une fonction, il est nécessaire de créer un type particulier.

type TDynamicIntArray = array of Integer;
 
procedure Algorithme1(ListeAdj:PListe; TabTraiT: TDynamicIntArray; n:integer; Var TableauCc: TDynamicIntArray); 
 



@+
Nico { www.ni69.info }
3
Samou85 Messages postés 46 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 7 octobre 2009
22 sept. 2009 à 11:37
Merci beaucoup "ni69" tu avais raison, j'ai changé la déclaration comme tu me l'as indiqué et ça marche!

MERCI encore,à +
0
Samou85 Messages postés 46 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 7 octobre 2009
22 sept. 2009 à 12:42
Je vais poser une autre question dans le meme esprit:
si maintenant je crée une autre procédure, qui fait appel à la précédente procédure c'est à dire: "procédure Algorithme1" qui a en sortit le tableau dynamique de la façon suivante:

 

procedure TForm1.Button4Click(Sender: TObject);
Var
.....
Begin
..
...
Algorithme1(ListeAdj,Indice,6,TableauCc);
ShowMessage(IntToStr((Length(TableauCc)-1)));
..
...
{traitement};
..
end;

ce qui se passe c'est que quand j'exécute ça n'affiche pas d'erreur mais une fois que ça compile ça s'arrete en mettant une erreur au niveau de la ligne "ShowMessage(IntToStr((Length(TableauCc)-1)));"
Voilà je voudrais savoir où est l'erreur??
Merci de me répondre!
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
22 sept. 2009 à 14:06
le declaration
type TDynamicIntArray = array of Integer;

existe deja dans l'unité Types en tant que TIntegerDynArray
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
22 sept. 2009 à 14:25
bonjour,

puisqu'il faut créer un tableau pourquoi ne pas le prévoir avec un paramètre :

type TDynamicIntArray = array of Integer;
 
procedure Algorithme1(ListeAdj:PListe; TabTraiT: TDynamicIntArray; n:integer;
out T:TDynamicIntArray);



cantador
0
Rejoignez-nous