Thanks David,

The thing is, I don't want to have to instantiate anything.
Yes, I agree the local variable thing is a problem. Does Delphi have the equivalent of 
a class variable then? Variable is not the right word.. what I really want is a static 
ref to a class that can be contained in another class and accessed like a instance 
variable. Am I asking too much? hmmm...

Thanks,

Chris

> -----Original Message-----
> From: David Brennan [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, 2 October 2002 4:13 p.m.
> To: Multiple recipients of list delphi
> Subject: RE: [DUG]: Class refs in classes
> 
> 
> Chris,
> 
> I'm guess that the problem isn't "accessing a class func 
> through a ref to a
> class". I think it is that you are trying to access a local 
> variable of a
> class without instantiating an instance of the class. The 
> line with the
> problem is:
> 
> Tmyclass2.class1.doIt;
> 
> The problem is actually the part "Tmyclass2.class1". The 
> other part (ie
> "class1.doIt") should be fine. The reason it doesn't work is 
> that Tmyclass2
> is a class reference and you can't access local variables of a class
> reference (and class1 is a local variable).
> 
> For this to be working you need to instantiate an instance of 
> Tmyclass2 as
> follows...
> 
> var
>   LMyClass2 : TMyClass2;
> begin
>   LMyClass2 := TMyClass2.Create;
>   LMyClass2.Class1 := Tmyclass1; // Or any other Tmyclass1 
> descendant class.
>   LMyClass2.Class1.doIt;
>   ...
> end;
> 
> (with appropriate try finally's etc added of course).
> 
> Cheers,
> David.
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED]]On
> > Behalf Of Chris Milham
> > Sent: Wednesday, 2 October 2002 3:45 p.m.
> > To: Multiple recipients of list delphi
> > Subject: [DUG]: Class refs in classes
> >
> >
> > Hi,
> >
> > I have been trying to make a hierarchical library of routines
> > using class procs/funcs. However Delphi 5 doesn't like me 
> doing this.
> > What I have tried to do is as follows (hope this makes sense..
> > only important bits included):
> >
> > type
> >   Tmyclass1 = class
> >      class procedure DoIt;
> >   end;
> >   Tmyclass1class = class of Tmyclass1;
> >   Tmyclass2 = class
> >     class1:Tmyclass1class;
> >   end;
> >
> > procedure TForm1.Button1Click(Sender: TObject);
> > begin
> >   Tmyclass1.doIt;   // <- no probs with using a class proc
> >  // Tmyclass2.class1.doIt; // *** Delphi compiler doesn't like me
> > doing this: accessing a class func through a ref to a class.
> > end;
> >
> > class procedure Tmyclass1.DoIt;
> > begin
> >   ShowMessage('Hello');
> > end;
> >
> >
> > The error Delphi gives is: method identifier expected.
> > I can understand this (yes, I've read the help on it) but why??
> > I have tried numerous ways of getting this to work but had to
> > resort one option....
> > I can work around this by simply having a class proc in Tmyclass2
> > that returns a Tmyclass1 class.
> > eg.
> >
> > Tmyclass2 = class
> >     class function class1:TmyClass1class;
> > end;
> >
> > class function Tmyclass2.class1: TmyClass1class;
> > begin
> >   Result := tmyclass1;
> > end;
> >
> > Then I can happily use this syntax: 'Tmyclass2.class1.doIt;'
> > This seems a not-too-nice way of doing what I want.
> > Any suggestions? Or am I trying to make Delphi be another 
> language? ;)
> >
> > The other thing is: Is Delphi's optimiser smart enough to convert
> > my 'class1'  function in Tmyclass2 into a static reference? ie.
> > am I going to have a performance hit because of trying to do this
> > hierarchical library thing?
> >
> > TIA,
> >
> > Chris
> >
> > ---
> >
> > Chris Milham
> > Software Developer
> > MedTech Software Ltd.
> > Level M, 48 Market Place, Viaduct Basin, Auckland
> > Ph. +649 3559666 Extn. 714, Fax +649 3774231
> > E-mail: [EMAIL PROTECTED]
> > Web: http://www.medtech-software.com
> >
> >
> > This e-mail and any attachments are intended only for the person
> > to whom it is addressed and may contain privileged, proprietary,
> > or other data protected from disclosure under applicable law. If
> > you are not the addressee or the person responsible for
> > delivering this to the addressee you are hereby notified that
> > reading, copying or distributing this transmission is prohibited.
> > If you have received this e-mail in error, please telephone us
> > immediately and remove all copies of it from your system. Thank
> > you for your co-operation.
> >
> >  <<Chris Milham.vcf>>
> >
> 
> --------------------------------------------------------------
> -------------
>     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/

Reply via email to