| 12
 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
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 
 |  
unit unibpj4 ;
 
{$mode objfpc}{$H+}
{$static off}
 
interface
 
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ExtCtrls, graph, crt, LclIntf, LclType, windows;
 
type
  { TNomHello }
 
  TNomHello = class(TForm)
    Button2: TButton;
    Button4: TButton;
 
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 
  private
    { private declarations }
  public
    { public declarations }
  end;
  PMaillon = ^Maillon ;
 
  Maillon = record
          Valeur : integer;
          ValeurSuivante : Pmaillon
  end;
 
 
var
 x, y, Y1: integer;
  NomHello: TNomHello;
  Pilote : smallint;
  Mode : smallint;
 
implementation
 
procedure TNomHello.Button2Click(Sender: TObject);
begin
 
Close;
end;
 
procedure ModeGraphique;
begin
Pilote := detect ;
  Initgraph( Pilote, Mode,'');
  If  GRAPHRESULT <> GROK
      Then HALT(1) ;
end;
 procedure ListeChainee;
 
Const
CnbElem : Integer = 10 ;
Var
   premier    : Pmaillon ;
   precedent   : Pmaillon ;
   actuel     : Pmaillon ;
 
 
begin
ModeGraphique;
    x := 200 ;
    y := 0 ;
    OutTextXY( x, y, 'Liste debut'  );
 
    new(premier);    (* le 1er est particulier : si on le perd, on perd la liste *)
{    write('1ère valeur ? ');
    readln(premier^.valeur);   (* lecture de l'enregistrement VALEUR
             de la variable d'adresse (pointée par) PREM *)
 
    premier^.valeur := 15 ;
    precedent:=premier;
    for i:=2 to  CnbElem do
     begin
      new(point);      (* création d'une nouvelle variable *)
      write(i,'ième valeur ? ');
      readln(point^.valeur);
      precedent^.suivant:=point;   (* mise à jour du chaînage *)
      precedent:=point   (*se préparer pour la prochaine boucle*)
     end;
    precedent^.suivant:=NIL;
  (* NIL signifie "rien" car 0 est un entier, non une adresse *)
    point:=prem;  (* heureusement, on se souvient du premier *)
    for i:=1 to n do begin
      writeln(point^.valeur);
      point:=point^.suivant  (* pour la prochaine boucle *)
    end
}
 
end; {fin ListeChainee}
 
procedure TNomHello.Button4Click(Sender: TObject);
begin
Listechainee;
end;
 
procedure TNomHello.FormCreate(Sender: TObject);
begin
end;
 
initialization
  {$I unibpj4.lrs}
end. | 
Partager