procedure proc1(a:integer); begin test:='123'; // тут выдает ошибку компиляции identifire not found end;
end.
в делфи переменная тест была глобальной и можно было к ней обращаться в модулях, после переноса на лазарус выдает ошибку identifire not found. может что в настройках проекта или компиляции надо еще указать?
delimer У меня была такая проблема, решила тем, что создала отдельный модуль с описанием глобальных переменных и констант. Если не получиться настроить лазарус как надо, то это решение должно помочь. P.S.:Кстати, если, все же настроишь лазарь, отпишись пожалуйста.
delimer Если вы добавляете модуль с объявлением глобальной переменной в любой другой в секцию uses, то данная переменная будет доступна и в этом модуле. Не знаю, что там в последних Дельфях придумали, но это спаведливо для стандарта языка Pascal!
да нет, как раз как я понял, автор поста запользовл какуюто фичу дельфей которая поперек стандарта паскаля и вообще как телега как телега впереди лошади. я такое впринципе делаю на С, но и там надо както дать понять модулю, что есть такая глобальная переменная тест, в хеадере ето обычно делается. тот пример который вы указали, я даже непонимаю как вообще компилятор может его компилить. что он должен использовать в качестве test при компиляции модуля? как я понимаю дельфа аутоматично подключает в uses модуль основной программы, но ето скрытая фича именно дельфи и она в стандарте реализована быть неможет.
Если это так, то это полный бред! Весь базис паскаля основан на том, что перед тем что что-то использовать надо это объявить! А тут наоборот... вобщето когдато был такой TMT паскаль, в нём подобная фишка была - но там надо было подключать основной модуль программы как обычный юнит (оно это хавало). В общем - маразм! Правильно проектируйте программы - и такого ... не надо будет делать.
Спасибо за ответы. Решил все это вынесением переменных в модуль. До этого писал все время на делфи и привык применять такие переменные (про то, что это не предусмотрено стандартом паскаля даже и не знал).
Если имя модуля совпадает с именем переменной как в примере, обращаться к ней из других модулей надо как test.test Это немного не о том, но сам недавно споткнулся, может пригодится при переносе переменных в модуль.
Вы обращаетесь из unit1 к переменной основного модуля программы. Это нельзя делать ни в дельфе не в FPC, ни в прочих паскалях. И с настройками лазаруса это никак не связано - нет таких. На самом деле ваша переменная не глобальная, а локальная переменная процедуры PascalMain - точки входа программы. Задекларируйте ее в unit1, в основном модуле она будет тоже видна ибо он (unit1) есть в uses. PS: пределах модуля нельзя декларировать имена совпадающие с его именем.