Runtime error 216 - Pointeurs - Procédures - Unit
Bonjour à tous,
tout d'abord merci pour le temps que vous voulez bien me consacrer afin de lire mon message et je l'espère d'y répondre. Je vais essayer d'être rapide :
lorsque je compile mon programme, l'erreur 216 apparait, je vous poste mon code ci-dessous:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| unit tirage;
interface
const max=9;
type
img=record
numero:integer; // numero de l'image
compteur:integer; // nombre de fois que l'image a été attribué
end;
PImg=^img;
listeImg=array[1..max*3] of PImg;
Tableau=array[1..6,1..max] of pinteger;
var
PListe:listeImg;
PteurT:Tableau;
procedure tiralea(ligne,colonne:integer);
implementation
procedure tiralea(ligne,colonne:integer);
var i,j,z,nombre:integer;
begin
nombre:=trunc((ligne*colonne)/2); // valeur : nombre de paires ; astuce(trunc): dans tous les cas on obtiendra la même valeur !
for i:=1 to nombre do
begin
new(PListe[i]);
PListe[i]^.numero:=i; // image(i)=numero(i) ... jusque la
rien de très compliqu
PListe[i]^.compteur:=0; // initialisation: l'image i a été attribué 0 fois
end;
for i:=1 to ligne do
for j:=1 to colonne do
repeat
z:=random(nombre)+1; // on tire un numéro de carte au hasard
if PListe[z]^.compteur<2 then // si l'image n'a pas été utilisé plus de 2 fois(ou 2) alors...
begin
new(PteurT[i,j]);
PteurT[i,j]^:=Pliste[z]^.numero;
Pliste[z]^.compteur:=Pliste[z]^.compteur+1;
end
else PteurT[i,j]^:=0; // Astuce
until PteurT[i,j]^<>0;
end;
end. |
Question subsidiaire: C'est mieux de faire un tableau de pointeurs pointant vers des entiers ou un pointeur pointant vers un tableau d'entiers? (Vous avez suivi? :mouarf:)
Merci pour le temps que vous aurez bien voulu m'accorder :ccool: