[Lazarus] Identifier not found, but code completion works....
Bo Berglund
bo.berglund at gmail.com
Sat Feb 19 15:11:13 CET 2011
On Fri, 11 Feb 2011 15:30:48 +0100, Mattias Gaertner
<nc-gaertnma at netcologne.de> wrote:
>On Fri, 11 Feb 2011 09:20:25 +0100
>Mattias Gaertner <nc-gaertnma at netcologne.de> wrote:
>
>> On Thu, 10 Feb 2011 23:41:27 +0100
>> Bo Berglund <bo.berglund at gmail.com> wrote:
>>
>> > I am testing an old Delphi communications component with lazarus. I
>> > don't want to install it as a component but instead create it in code.
>> > So I have started a new project and added the path to the Serial unit
>> > to the project options (Other Unit files).
>> > I also included it in the uses clause.
>> >[...]
>> > When I did this lazarus showed me hints on what I could select when I
>> > added the period after the serComm name, so I know that it is known by
>> > lazarus.
>> > But when I try to run the program lazarus shows an error:
>> >
>> > unit1.pas(22,21) Error: Identifier not found "TSerial"
>> >
>> > But TSerial is the class name for the component and it is found by
>> > lazarus when I write the code, so why in heavens name does it not find
>> > it when compiling???????
>>
>> Do you have units with upper case letters in the file name?
>> Maybe you have two units with the same name.
>> Go to your uses section, where Serial is uses. Place source editor
>> cursor at the end of the used unit name and use Ctrl+Space to fix the
>> case.
>
>I just got the same error.
>The cause was a cross unit reference. Implementation uses sections are
>evil. It's near impossible to create simple bug reports for such
>compiler bugs.
>
Could you expand on this?
I am used to my Delphi practice of putting uses references as far down
the ladder as possible.
This means that if something is not needed in the interface section I
routinely put it into the implementation uses.
Is this bad practice with FPC/Lazarus?
--
Bo Berglund
Developer in Sweden
More information about the Lazarus
mailing list