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/