[fpc-pascal] Re: TypInfo Error: type identifier not allowed here
Graeme Geldenhuys
graemeg.lists at gmail.com
Fri Oct 27 11:16:43 CEST 2006
Yet if I don't use the GetEnumName inline, it works!?!?
For example, I call GetEnumName and store the result in a string
variable, and then use it in the Check() method.
Oh, and Check() is define as follows;
class procedure Check(pValue: boolean; pMessage: string = '');
procedure TtiTestCase.CheckObjectState(
pObjectState: TPerObjectState;
pData: TtiObject;
const pMessage: string = '');
var
objstate: string;
begin
Assert(pData.TestValid, cTIInvalidObjectError);
objstate := GetEnumName(TypeInfo(TPerObjectState), Ord(pObjectState));
Check(pObjectState = pData.ObjectState,
'ObjectState: Expected <' +
{$IFDEF FPC}
{$Note Find out why TypeInfo doesn't work in this case! It can't
be used directly??? }
{$ENDIF}
objstate +
'> but got <' +
pData.ObjectStateAsString +
'> on ' + pData.ClassName + '. ' + pMessage);
end;
Why can I not use GetEnumName inline?
Regards,
- Graeme -
On 27/10/06, Graeme Geldenhuys <graemeg.lists at gmail.com> wrote:
> Why do I get this error?
> /tiOPF/UnitTests/Common/tiDUnitUtils.pas(231,32) Error: type
> identifier not allowed here
>
> It works on other enumerated declarations, but not on this one. I am
> pretty sure this code worked before, as I have been using tiOPF under
> FPC since December 2005. I marked the location of the error with a
> comment in the code below.
>
>
> procedure TtiTestCase.CheckObjectState(
> pObjectState: TPerObjectState;
> pData: TtiObject;
> const pMessage: string = '');
> begin
> Assert(pData.TestValid, cTIInvalidObjectError);
> Check(pObjectState = pData.ObjectState,
> 'ObjectState: Expected <' +
> GetEnumName(TypeInfo(TPerObjectState), Ord(pObjectState)) +
> // error occurs here ---^---
> '> but got <' +
> pData.ObjectStateAsString +
> '> on ' + pData.ClassName + '. ' + pMessage);
> end;
>
>
> where TPerObjectState is declared as follows:
>
> TPerObjectState = (
> posEmpty,
> posPK,
> posCreate,
> posUpdate,
> posDelete,
> posDeleted,
> posClean
> ) ;
>
>
> I am using FPC 2.1.1 (r4642) under Linux (kernel 2.6) on Intel P4 processor.
>
> Regards,
> - Graeme -
>
>
> --
> There's no place like 127.0.0.1
>
--
There's no place like 127.0.0.1
More information about the fpc-pascal
mailing list