TApplication.HandleException Access violation Incompréhensible
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:
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:
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:
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à.