[fpc-devel] Re: Testing for..in feature

Paul Ishenin ip at kmiac.ru
Thu Nov 5 04:53:43 CET 2009


Florian Klaempfl wrote:
> You can use the rtti generated for those enums.

Actually I can't :)

uses
   typinfo;
type T = (a1, b1=5);
var
   ch: T;
   Info: PTypeInfo;
begin
   Info := TypeInfo(T);

compiler: project1.lpr(10,11) Error: No type info available for this type

So what is the best solution for now:

1) check if enum has jumps and give an error
2) skip any compiler code modifications since the next code still works 
and outputs 5 numbers:
type T = (a1, b1=5);
var
   ch: T;
begin
   for ch in T do
     WriteLn(Ord(ch)); // <- note Ord() here
end
3) fix write/writeln to write something for the non-existent enum 
members (in the example they are 2, 3, 4) instead of giving runtime error
4) write 2 magic functions: one to get the next enum value, one to get 
the previos enum value and implement a special handling in the for-in 
loop for such arrays

Best regards,
Paul Ishenin.




More information about the fpc-devel mailing list