Appel a Create sans créer l'instance de l'objet
Bonjour
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
| unit u_traitement;
interface
uses classes,dialogs,db,sysutils,forms,IBQuery;
type
traitement = class
Frm_trait : Tform;
fls_trait : Tfilestream;
fld_trait : Tblobfield;
ibq_trait : TIBquery;
end;
Trt_savfldb = class(Traitement)
odg_trait : Topendialog;
Constructor Create( ibq_trait : TIBquery;fld_trait : Tblobfield;Frm_trait :Tform);
end;
Trt_savfldisc = class(Traitement)
sdg_trait : Tsavedialog;
Constructor Create( ibq_trait : TIBquery;fld_trait : Tblobfield;Frm_trait :Tform);
end;
implementation
Constructor Trt_savfldb.Create( ibq_trait : TIBquery;fld_trait : Tblobfield;Frm_trait : Tform);
Begin
if ibq_trait.State in [dsEdit, dsInsert] then
Begin
odg_trait := Topendialog.Create(Frm_trait);
if odg_trait.Execute then
begin
fls_trait := Tfilestream.Create(odg_trait.FileName ,fmopenread);
fld_trait.LoadFromStream(fls_trait);
end;
ibq_trait.Post;
end;
end;
Constructor Trt_savfldisc.Create( ibq_trait : TIBquery;fld_trait : Tblobfield;Frm_trait : Tform);
Begin
if not(ibq_trait.State in [dsEdit, dsInsert]) then
Begin
sdg_trait := Tsavedialog.Create(Frm_trait);
if sdg_trait.Execute then
fld_trait.SaveToFile(sdg_trait.FileName);
end;
end;
end. |
pour appeller cette classe
Code:
Trt_savfldb.Create(ibq_user,ibq_userDOC,frm_Princ);
et
Code:
Trt_savfldisc.Create(ibq_user,ibq_userDOC,frm_Princ);
// pas d'exception
Je comprend pas pourquoi dans certain cas on doit créer l'instance de l'objet.
Code:
1 2 3 4
| var
tt : traitement ;
begin
tt := Trt_savfldb.Create(ibq_user,ibq_userDOC,frm_Princ); |
Merci