Bonjour,

J'ai modifié un programme compilé avec des versions plus anciennes de Lazarus avec la 1.6.2 et je m'en mords les doigts, le problème exposé ci-dessous survient tout autant avec la 1.6.4 et le svn du jour de la 1.6.8:

J'ai cette fonction:

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
 
Function PopUp_Yes_No (   FWin:TForm; Mess:String ):Boolean;
 
Begin
//showmessage('1');
  FPopup_Yes_No:=TFPopup_Yes_No.Create(NIL);  // Créer une fenetre de confirmation Oui/Non.
//showmessage('2');
  FPopup_Yes_No.Top:=FWin.Top+((FWin.Height-FPopup_Yes_No.Height) div 2);
  FPopup_Yes_No.Left:=FWin.Left+((FWin.Width - FPopup_Yes_No.Width) div 2);
 
  With FPopup_Yes_No do begin                  // Positionner la fenêtre popup.
    L_Mess.Caption:=Mess;
    ShowModal;
    result:=SB_OK.Tag=1;
    free;
  end;
end;
Tant qu'elle est utilisée seule ça marche mais lorsque je lui fait un appel avant d'utiliser celle-ci:

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
 
  Procedure Set_PopUp_Export_Dbf ( W_Parent:TForm; T_Name:String; Typ_Export:Integer);        // Pop up radio boutons pour export DBF.
 
Begin
  F_Popup_Rb:=TF_Popup_Rb.Create(NIL);      // Créer une fenetre de radio boutons avec les options de conversion de chaines.
 
  With F_Popup_Rb do begin                  // Positionner la fenêtre popup pour les options d'export.
    Top:=W_Parent.Top+20;;
    Left:=( W_Parent.Left+(W_Parent.Width div 2)-(F_Popup_Rb.Width div 2));
    Top:=(W_Parent.Top+(W_Parent.Height div 2)-(F_Popup_Rb.Height div 2));
    Width:=229;
    L_Table.Caption:=T_Name;
    Caption:='Exporte vers ';
 
    case Typ_Export of
      0: Begin
        With F_Popup_Rb.RG_PopUp do begin   // Initialiser popup pour export DBF.
          L_Table.Caption:=L_Table.Caption+' => DBF';
          Caption:='Options Export';
          Items.Add('Abandonner');
          Items.Add('Ajouter dans la table');
          Items.Add('Remplacer la Table');
          ItemIndex:=0;
          Rg_PopUp_Memo.visible:=False;
         end;
      end;
      1: Begin
        With F_Popup_Rb.RG_PopUp do begin   // Initialiser popup pour export DBF.
          L_Table.Caption:='';
          Caption:='Options';
          Items.Add('Choisir et ouvrir');
          Items.Add('Choisir et copier');
          Items.Add('Choisir et déplacer');
          Items.Add('Copier tout');
          Items.Add('Déplacer tout');
          Items.Add('Abandonner');
          ItemIndex:=0;
          Rg_PopUp_Memo.visible:=False;
         end;
       end;
      2:Begin
        With F_Popup_Rb.RG_PopUp do begin
        L_Table.Caption:=L_Table.Caption+' => CSV';
          Items.Add('Pas de conversion');
          Items.Add('UTF8 => Ansi');
          Items.Add('UTF8 Encode');
          Items.Add('UTF8 Decode');
          Items.Add('ANSI => Utf8');
          ItemIndex:=0;
        end;
      end;
    end;
  end;
end;       // Note:  Le free est à la fin de la fonction d'export.
Et que je l'appelle à nouveau pour demander si les fiches exportées doivent être effacées de la table d'origine j'ai ça dans le terminal au moment du create. même chose si je fais un if assigned ():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
TApplication.HandleException Access violation
  Stack trace:
  $00000000004D2A6D
  $000000000081EE53
  $00000000008B5CA8
  $00000000008248F3
  $0000000000505854
  $00000000005060AA
  $000000000042229F
  $0000000000567855
  $0000000000675C41
Et je ne me l'explique pas du tout ? Je suis toujours en FPC 3.0.0 mais je ne pense pas que ça vienne de là.