Manipuler un tableau dynamique dans une procédure

Signaler
Messages postés
8
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
2 juin 2003
-
Messages postés
8
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
2 juin 2003
-
Bonjour,

j'ai un tableau dynamique que j'envoie en paramètre par adresse à une procédure.
Cependant lorsque j'essaie de l'y redimensionner il me sort une erreur :sad) :

procedure TFichePrincipale.GaveTabExt(var monTab: array of string; ficINI : string);
var
   mesExt : string;
   position, i : integer;
begin
   //récupération des types à faire
   i := -1;
   mesExt := LireINI(ficINI, 'param', 'ext', '');
   while mesExt <> '' do
   begin
      inc(i);
      SetLength(monTab, i+1);


L'erreur :
[Erreur] Unit1.pas(122): Types incompatibles

Merci d'avance.

2 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
29
Le type du tableau étant déclaré au niveau des arguments de la procédure GaveTabText, il est donc du type anonyme.
En revanche, en déclarant de la façon suivante :
Type
  TMonTab =  array of string;
var
  MonTab : TMonTab;

procedure TFichePrincipale.GaveTabExt(var monTab:  TMonTab ; ficINI : string);
begin
  //...
end;

il n'y a aucun problème.
Une petite remarque en passant :
while mesExt <> '' do

L'utilisation d'une boucle While n'a pas vraiment de sens ici puisque mesExt est du type string. Un simple If est amplement suffisant. De plus, au vu du code, i vaut toujours 0, alors, quelle est l'utilité de déclarer cette variable ? Ne voudrais-tu pas plutôt agrandir le tableau à chaque fois que tu appelles cette procédure ?
if mesExt <> EmptyStr then
begin
 i : = Length(MonTab); 
 inc(i);
 SetLength(monTab, i+1);

Mais, passé 1 heure du matin, on n'a plus forcément l'esprit clair... :)
May Delphi be with you
Messages postés
8
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
2 juin 2003

Merci, ça marche au poil !

Enkidou
------------------
enkidou@free.fr