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<h...@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

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to