Bonjour à tous,

Ayant commencé un bachelier en informatique cette année, on m'a demandé de créer une unité qui puisse générer un tableau statique de manière aléatoire ou par entrée clavier et qui puisse l'afficher.

Cependant, ayant raté une bonne partie des cours sur les tableaux et les unités, je me retrouve avec quelques lacunes que je n'arrive pas à combler

Je développe ce programme sous Lazarus.

Voici donc l'unité censée créer et afficher mon tableau :
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
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
unit unit_tableau;
 
interface
uses seqint;
const indmin = 1;
         indmax = 10;
type  elem = integer;
         Ttab = array [indmin .. indmax] of  elem;
 
procedure ChargeTab (var t:Ttab; var long:integer);
{  effet:		initialise le tableau t Ã* partir de la première composante gauche avec un  contenu aléatoire
                           (provenant d'une séquence quelconque)
		et calcule dans long le  nombre de composantes initialisées }
 
 procedure  ClavTab(var t:Ttab; var long:integer);
{  effet: 	 initialise le tableau t depuis le clavier.
                  (999 joue le rôle de sentinelle si on ne souhaite pas remplir complètement le tableau).
	et calcule dans long le nombre  de  composantes initialisées.
 }
 
 procedure ChargeDefTab (var t: Ttab; var long:integer );
{    effet: initialise le tableau t Ã* partir de la première composante gauche avec le contenu d'une séquence
               de caractéristique genre (croissante, doublesvt)
	et calcule dans long le nombre de composantes initialisées.
     Exception : si taille s > indmax --> le chargement se limite Ã* indmax composantes.}
 
procedure AfficheTab (const  t: Ttab; const  long:integer );
{ effet : affiche les composantes significatives du tableau (les longs premières composantes du tableau) }
 
implementation
 
procedure ChargeTab (var t:Ttab; var long:integer);
var s:tseqint;
    it: tseqiter;
begin
s:=tseqInt.create(quelconque);
it:=tseqIter.init(s);
long:=indmin-1;
while (long< indmax ) and not it.aubout
 do begin inc(long);
          t[long] :=it.valeurCourante;
    end;
 
end ;
 
procedure  ClavTab(var t:Ttab; var long:integer);
var x:integer;
begin
long:=indmin -1;
readln(x);
while (long<indmax) and (x<> 999)
 do begin
 inc(long);
 t[long]:= x;
 readln(x);
end;
end;
 
 procedure ChargeDefTab (var t: Ttab; var long:integer );
 var s:tseqint;
     it: tseqiter;
 begin
 s:=tseqInt.create(quelconque);
 it:=tseqIter.init(s);
 long:=indmin-1;
 while (long< indmax ) and not it.aubout
  do begin  inc(long);
            t[long] :=it.valeurCourante;
 
     end;
 
end ;
 
 
 
 
procedure AfficheTab (const  t: Ttab; const  long:integer );
var i:integer;
begin
for i:=1 to long do write(t[i]:4);
writeln;
 
 
end ;
 
 
 
end.
J'effectue mon appel d'unité de la manière suivante (l'erreur provient sûrement d'ici) :
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
program Project1;
 
uses  unit_tableau;
 
var a:integer;
    z:Ttab;
 
begin
a:=1;
writeln('salut');
ChargeTab(z,a) ;
writeln('voila');
AfficheTab(z,a);
writeln('fini');
readln();
 
 
end.
Lorsque je compile, pas de souci hormis que le compilateur me dit que z ne semble pas avoir été initialisé.
Mais à l'exécution, Lazarus n'affiche la fenêtre du programme que durant 1 sec.

J'ai réussi à screen-shooter le message mais je ne vois pas à quoi correspond le problème
[IMG][/IMG]

Voilà, en espérant que quelqu'un puisse m'éclairer