[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