As has been mentioned you can use the "built in" enumerator, but that will only yield Pointer values, so you would then have to typecast the results, or you should be able to use "absolute" to achieve the typecast "declaratively" in the var declarations:
var addrFormatEnum: Pointer; addrFormat: TCountryAddressFormat absolute addrFormatEnum; begin for addrFormatEnum in Self do begin Strings.AddObject(addrFormat.CountryName, TObject(addrFormat.CountryRefAsInteger)); end; end; But note that the above code is untested either for compilation or behaviour. J From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] On Behalf Of Robert martin Sent: Thursday, 15 October 2009 10:45 a.m. To: NZ Borland Developers Group - Delphi List Subject: Re: [DUG] Stupid /easy question Hi Yeah I read examples of how to add enumerators but since TObjectList already has one I didn't think I needed to. Guess I do. Seems like it is a bit too much work for basic (small) classes not frequently used (such as the one im working on). Will give it a go anyway :) Thanks Rob Jolyon Smith wrote: You will have to implement an enumerator for your TCountryAddressFormats class that returns TCountryAddressFormat references. This isn't a language feature that "just works" - you have to put some infrastructure in place to support it. The feature appears to "just work" for a bunch of VCL types (TStringList etc) because the VCL already contains the necessary infrastructure additions (and which should provide the examplar implementations on which you could base your own). -----Original Message----- From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] On Behalf Of Robert martin Sent: Thursday, 15 October 2009 10:06 a.m. To: NZ Borland Developers Group - Delphi List Subject: [DUG] Stupid /easy question Hi After the D2010 presentation yesterday I decided I should actually use some of the D2007 features I had not gotten around to using. Specifically the For .. in construct. I am sure I am missing something but here iss what I want to do I have the following 'old school code' (note the base class here inherits from TObjectList) procedure TCountryAddressFormats.LoadStringListWithCompanies(Strings: TStrings); var Counter : Integer; begin for Counter := 0 to Self.Count - 1 do begin Strings.AddObject( TCountryAddressFormat(Self.Items[Counter]).CountryName, Tobject(TCountryAddressFormat(Self.Items[Counter]).CountryRefAsInteger) ); end; end; I wanted to replace it with procedure TCountryAddressFormats.LoadStringListWithCompanies(Strings: TStrings); var CountryAddressFormat : TCountryAddressFormat; begin for CountryAddressFormat in Self do begin Strings.AddObject( CountryAddressFormat.CountryName, TObject(CountryAddressFormat.CountryRefAsInteger) ); end; end; but I get the following error [DCC Error] AddressFormat.pas(157): E2010 Incompatible types: 'TCountryAddressFormat' and 'Pointer' what am I missing ? Cheers Rob _______________________________________________ NZ Borland Developers Group - Delphi mailing list Post: delphi@delphi.org.nz Admin: http://delphi.org.nz/mailman/listinfo/delphi Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: unsubscribe _______________________________________________ NZ Borland Developers Group - Delphi mailing list Post: delphi@delphi.org.nz Admin: http://delphi.org.nz/mailman/listinfo/delphi Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: unsubscribe
_______________________________________________ NZ Borland Developers Group - Delphi mailing list Post: delphi@delphi.org.nz Admin: http://delphi.org.nz/mailman/listinfo/delphi Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: unsubscribe