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