[Lazarus] Forward declaration not solved

Michael Van Canneyt michael at freepascal.org
Fri Aug 9 12:19:34 CEST 2013

On Fri, 9 Aug 2013, Antonio Fortuny wrote:

> Le 09/08/2013 11:29, Sven Barth a écrit :
>> Am 09.08.2013 11:15, schrieb Antonio Fortuny:
>>> Le 09/08/2013 10:22, Mattias Gaertner a écrit :
>>>> clamav3.pas(324,12) Error: Forward declaration not solved
>>>> "OpenLongFileName(const AnsiString,const LongInt):QWord;"
>>>> Any comment ?
>>>> Maybe there is a unit in your implementation uses section that
>>>> redefines THandle.
>>> On the declaration (following Ctrl + mouse left click) leads to QWord: 
>>> THandle --> PtrUInt (LCLType) --> QWord (systemh.inc)
>>> on the implementaion: THnadle --> System.THandle (sysutilf.inc) --> 
>>> THandle --> LongInt (sysosh.inc)
>>> Well done. In the interface units uses declares:   LCLIntf, LCLType, 
>>> LMessages,  FileUtil;
>>> In the implemantaion uses declares   Classes,  sysutils;
>>> OK. It is a Delphi conversion and I didn't pay enough attention to it
>>> But the isn't there some ambiguity between LCL declarations and FPC 
>>> declarations for what is obviously the same type ?
>> Might be related to the fact that the LCL often uses the THandle to store a 
>> pointer on non-Windows widgetsets. On e.g. Linux x86_64 THandle is defined 
>> as a longint because of file operations... There might not be a solution 
>> with which anyone can live :/
> OK, I think I can live with this. But I think it would be preferable to use a 
> distinct type name.

I have been proponent of this idea since many years :-)


More information about the Lazarus mailing list