[fpc-pascal] Error: Illegal qualifier in converting Delphi unit
    Howard Page-Clark 
    hdpc at talktalk.net
       
    Mon Mar 15 08:39:27 CET 2010
    
    
  
On 14/3/10 11:52, Frank Church wrote:
> Your suggestion worked - what is the secret?
> Does the array[0..0 have some relevance here?]
>
> On 14 March 2010 23:01, Howard Page-Clark<hdpc at talktalk.net>  wrote:
>> On 14/3/10 6:11, Frank Church wrote:
>>>
>>> Hi guys,
>>>
>>> I am trying to compile the TVersionInfo component by Anders Melander
>>> at http://melander.dk/articles/versioninfo/.
>>>
>>> It defines the structure below
>>>
>>> type
>>>    TTranslationRec = packed record
>>>      case Integer of
>>>      0: (
>>>        LanguageID: WORD;
>>>        CharsetID: WORD);
>>>      1: (
>>>        TranslationID: DWORD);
>>>    end;
>>>    PTranslationRec = ^TTranslationRec;
>>>    TTranslationTable = array[0..0] of TTranslationRec;
>>>    PTranslationTable = ^TTranslationTable;
>>>
>>>
>>> which causes the compiler error
>>>
>>> VersionInfo.pas(141,37) Error: Illegal qualifier
>>>
>>> function TVersionInfo.GetCharset(Index: integer): WORD;
>>> begin
>>>    Result := TranslationTable[Index].CharsetID;
>>> end;
>>>
>>> Is there a way to convert for Free Pascal compatibility?
>>
>>   try:
>>
>>   result := TranslationTable[Index]^.CharsetID
>>
>> Howard
No secret - just that fpc requires stricter syntax than Delphi, even in 
{$mode Delphi}. The property TranslationTable is an array property 
declared as a pointer (PTranslationTable), so has to be dereferenced 
before its members can be accessed. It would have helped if the code's 
author had named the property PTranslationTable to highlight that fact, 
because the name hides its pointer character.
H
    
    
More information about the fpc-pascal
mailing list