I ran your slightly modified test (as shown). gCls := TGraphicClass(TMyGraphic); nGra := gCls.Create; Assert(nGra is TMyGraphic); nGra.Free; nGra := TMyGraphic.Create; Assert(nGra is TMyGraphic); nGra.Free;
As expected, in each instance (no pun intended), TMyGraphic.Create was called (indicated by the dialog appearing twice) as well as passing each of the asserts. -Andreas -----Original Message----- From: [EMAIL PROTECTED] [mailto:owner-delphi@;delphi.org.nz]On Behalf Of Jianming Lin (ASL) Sent: Friday, 18 October 2002 09:17 To: Multiple recipients of list delphi Subject: RE: [DUG]: polymorphism problem More Examples of my problem: //------------------------------------------------------------------------ Type TMyGraphic = class(TGraphic) public constructor Create; override; end; constructor TMyGraphic.Create; begin inherited; ShowMessage('kk'); end; //------------------------------------------------------------------------ procedure TryIt; var gCls : TGraphicClass; nGra : TGraphic; begin gCls := TGraphicClass(TMyGraphic); nGra := gcls.Create; // TMyGraphic costructor won't be called, Why? nGra := TMyGraphic.Create; // called successfully end; -----Original Message----- From: Dennis Chuah [mailto:dennis_cs_chuah@;hotmail.com] Sent: Friday, 18 October 2002 7:14 a.m. To: Multiple recipients of list delphi Subject: Re: [DUG]: polymorphism problem I stepped through your code and it *DEFINITELY* calls TMetadata.Create. What you have done looks correct and this is certainly not a polymorphism pproblem. Few suggestions: 1. Check that you do not have $(DELPHI)\Lib in your project path - it should only be in the global library path. 2. What if you replaced your code with: NGraphic := TMetadata.Create; Step through the code - does it call TMetadata.Create? 3. Check the class type of NGraphic and compare Pointer(NGraphic.ClassType) against Pointer(TMetadata). Are they the same pointer values? What version of Delphi are you using? Dennis. ----- Original Message ----- From: Jianming Lin (ASL) To: Multiple recipients of list delphi Sent: Thursday, October 17, 2002 4:35 PM Subject: [DUG]: polymorphism problem G'Day, guys, procedure TryMetadata(ImgType : Integer); var NGraphic: TGraphic; GraphicClass: TGraphicClass; begin ImgType := 1; case ImgType of 1 : GraphicClass := TMetaFile; 2 : GraphicClass := TBitmap; end; NGraphic := GraphicClass.Create; end; Why constructor of TMetafile.Create is not called instead only TObject.Create is called? [Jianming Lin (ASL)] This e-mail message has been scanned for Viruses and Content and cleared by MailMarshal - For more information please visit www.marshalsoftware.com --------------------------------------------------------------------------- New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] Website: http://www.delphi.org.nz To UnSub, send email to: [EMAIL PROTECTED] with body of "unsubscribe delphi" Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/ ############################################################################ ######### This e-mail message has been scanned for Viruses and Content and cleared by MailMarshal For more information please visit www.marshalsoftware.com ############################################################################ ######### --------------------------------------------------------------------------- New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] Website: http://www.delphi.org.nz To UnSub, send email to: [EMAIL PROTECTED] with body of "unsubscribe delphi" Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/ --------------------------------------------------------------------------- New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] Website: http://www.delphi.org.nz To UnSub, send email to: [EMAIL PROTECTED] with body of "unsubscribe delphi" Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/