I sure have.
Works fine.
I think it's ok because I am only accessing class functions of the class. The memory 
won't be random as the compiler knows where the class functions (& methods for that 
matter) will be at compile time. It's only a classes data that gets allocated 
dynamically at runtime when classes ar instantiated. My classes don't have any data, 
and are never instantiated so it's fine.
This sound right?
I could have just fluked it though :/

Chris

> -----Original Message-----
> From: David Brennan [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, 2 October 2002 5:10 p.m.
> To: Multiple recipients of list delphi
> Subject: RE: RE: RE: [DUG]: Class refs in classes
> 
> 
> Umm, yeah. Have you tried running it yet?
> 
> Looks like you are type casting your class reference as an TmyClass2
> instance and then accessing the class1 local variable. While 
> that might fool
> the compiler I very much doubt it will fool the operating system into
> believing that the random memory at the location 
> TmyClass2(Tmyclass2).class1
> is actually anything valid...
> 
> Prepared to be proved wrong tho! ;-)
> 
> David.
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED]]On
> > Behalf Of Chris Milham
> > Sent: Wednesday, 2 October 2002 4:46 p.m.
> > To: Multiple recipients of list delphi
> > Subject: RE: RE: RE: [DUG]: Class refs in classes
> >
> >
> > Got it working.. still doesn't look nice.
> > How's this for wierd syntax?...
> >
> >    TmyClass2(Tmyclass2).class1.doIt;
> >
> > :)
> >
> > Chris
> >
> >
> > > -----Original Message-----
> > > From: Myles Penlington [mailto:[EMAIL PROTECTED]]
> > > Sent: Wednesday, 2 October 2002 4:31 p.m.
> > > To: Multiple recipients of list delphi
> > > Subject: RE: RE: [DUG]: Class refs in classes
> > >
> > >
> > > No. You should be able to do this. It is in essence what
> > > create does. Seems
> > > like the compiler is getting confused - perhaps try some
> > > syntax variations
> > > to get it to work.
> > >
> > > Myles.
> > >
> > >
> > > -----Original Message-----
> > > From: Chris Milham [mailto:[EMAIL PROTECTED]]
> > > Sent: Wednesday, 2 October 2002 4:29 p.m.
> > > To: Multiple recipients of list delphi
> > > Subject: RE: RE: [DUG]: Class refs in classes
> > >
> > >
> > > 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/
> > > --------------------------------------------------------------
> > > -------------
> > >     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/
> 
> --------------------------------------------------------------
> -------------
>     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