Bonjour.
Pour profiter de ma période de confinement, j'ai entrepris de transcrire une Réussite «FreeCell» que j'avais écrite en Delphi7 (qui fonctionne très bien), en Lazarus.
Pour cela j'utilise des listes d'images, des listes de « Records » et des listes de listes. Avec toutes ces listes, le compilateur ne trouve pas d'erreurs sauf quelques conseils, mais le programme se termine par une « Classe d'exception:External SIGSEGV »
Pour déboguer la création de la liste d'images j'ai écrit un petit programme test dont voici l'unité principale :
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
unit ListeTest_P;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Image1: TImage;
    Image10: TImage;
    Image11: TImage;
    Image12: TImage;
    Image13: TImage;
    Image14: TImage;
    Image15: TImage;
    Image16: TImage;
    Image0: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    Panel1: TPanel;
    Panel2: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure CreerListIm(Sender:TObject);
  private
 
  public
 
  end;
 
var
  Form1: TForm1;
  Image0,Image1,Image2,Image3,Image4,Image5,Image6,Image7,Image8,Image9,
  Image10,Image11,Image12,Image13,Image14,Image15,Image16:TImage;
  ListIm:TList;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListIm.Create;
  CreerListIm(Sender);
end;
procedure TForm1.CreerListIm(Sender:TObject);
var
  n:integer;
  s:string;
begin
 
  ListIm.Add(Image0);//Sert à afficher la pioche (centre haut, index 0)
  ListIm.Add(Image1);//Première colonne bas(index 1)
  ListIm.Add(Image3);
  ListIm.Add(Image4);
  ListIm.Add(Image5);
  ListIm.Add(Image6);
  ListIm.Add(Image7);
  ListIm.Add(Image8);//Dernière colonne bas(index 8)
  ListIm.Add(Image9);//Première colonne haut(index 9)
  ListIm.Add(Image10);
  ListIm.Add(Image11);
  ListIm.Add(Image12);//Dernière colonne haut(index 12)
  ListIm.Add(Image13);//Première colonne de dépôt
  ListIm.Add(Image14);
  ListIm.Add(Image15);
  ListIm.Add(Image16);//Dernière colonne de dépôt
  n:=ListIm.Count;
  str(n,s);
  Panel2.Caption:=s;
end;
 
end.
La fonction ListIm.Add() nécessite pour attribut un pointeur, est-ce que l'erreur viendrait de là ? Dans ce cas, comment créer un pointeur sur chaque image ?
Ensuite comment accéder à une image de la liste pour par exemple modifier sa taille ?

Un grand merci à ceux qui voudront bien se pencher sur mon problème.