Bonjour,
J'ai fait quelques recherches, fait quelques essais, mais là je sèche sur ce soucis
Je dois ajouter une fonctionnalité a un programme existant... je vous présente la chose.
- j'ai dans un "TabularFile" (enfait un stringgrid avec un "Loadfromfile") qui charge des fichiers textes. Le nombre de colonne est fixe, mais le nombre de ligne est variable.
- je dois faire une analyse statistiques (uses Math) sur des chiffres de ce tableau. Le nombre de chiffre est variable.
- je crée un tableau dynamique.
- pour ce faire, je balaye tout le tableau dans une boucle FOR entre la borne inférieur et la borne supérieur du tableau. Quand une condition est vrai, je copie le chiffre de la cellule dans un tableau dynamique. A chaque ajout dans le tableau dynamique, j'agrandis le tableau avec un SetLength.
- A la compilation, j'ai le message d'erreur cité dans le titre : "Types incompatibles : 'Array' et 'dynamic array'".
J'ai écris un bout de code d'exemple:
Dans ce cas "a" = 56 et "b" = 179
La tableau = "dummy: array of double;"
Le programme copie dans le tableau dynamique (dummy) une série de valeur lues dans le TabularFile entre la borne inférieur "a" et la borne supérieur "b" et finalement de calculer la valeur MIN, MAX et la Moyenne. Dommage il manque la Mediane.
- Je ne vois pas comment ne pas utilisé de tableau dynamique, je ne connais pas à l'avance le nombre de valeur a lire...
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
19
20 // Variable indice du tableau dummy_count:=0; // Initialise le tableau a 0 élément setlength(dummy,0); for y:=a to b do begin // Aggrandi le tableau de 1 élément SetLength(dummy, Length(dummy)+1); // Copie dans le tableau le contenu de la cellule dummy[dummy_count]:=strtoint(tabularfile1.Cells[11,y]); // Incrémente l'indice du tableau inc(dummy_count); end; // Le trouble est ci-dessous. memo1.lines.add('MinValue: '+MinValue(dummy)); memo1.lines.add('MaxValue: '+MaxValue(dummy)); memo1.lines.add('MeanValue: '+Mean(dummy));
J'espère avoir été assez clair et précis, vous pouvez m'aider ??
Merci à l'avance
Partager