Delphi, не может использовать функцию во внешнем файле .pas - PullRequest
3 голосов
/ 21 июня 2011

Я использую функции из внешнего файла .pas.Я могу использовать некоторые функции, но не другие.Насколько я вижу, функции объявляются одинаково, я хотел бы опубликовать часть файла, но не знаю, как разместить большое количество кода.

Ответы [ 2 ]

5 голосов
/ 21 июня 2011

Вы можете использовать функции, которые объявлены в разделе интерфейса, то есть в разделе кода перед разделом implementation.

Возможно, вы пытаетесь вызвать функции, определенные только в разделе реализацииэто тот код, который появляется после ключевого слова implementation.

Эти различные разделы показывают, как Delphi реализует публичную и приватную видимость на уровне единиц.будет причиной того, что функции станут частными для устройства.Но если вы считаете разумным переопределить решение автора, вам нужно переопределить функцию в разделе интерфейса.Это сделает его доступным для вашего кода, который использует сторонний модуль.

5 голосов
/ 21 июня 2011

Файл неправильно связан и / или не включен в путь поиска ваших проектов и / или затенен каким-либо другим файлом с такими же именами функций и / или нечетными функциями, которые находятся в $IFDEF предложениях.

Проверкаорфография, использование предложений, расположение рабочей функции ( Ctrl + нажмите на название функции в вашем коде), $IFDEF предложения.

  1. Файл неправильно связан в параметрах среды Delphi
  2. Файл может находиться за пределами пути поиска проекта.Следовательно, он не связан.
  3. Путь к файлу неверно указан в проекте (файл DPR).Например, вы ссылаетесь на более старый путь с старой версией файла.

В каждом из этих случаев некоторые функции могут быть взяты из других файлов, если имя подходит.Например, функцию gluUnproject можно взять как из OpenGL.pas, так и из dglOpenGL.pas, если первый модуль не связан должным образом, у меня возникнет та же проблема, что и у вас сейчас - некоторые функции работают, а некоторые отсутствуют.В любом случае вы должны скомпилировать свой проект, Ctrl + Нажмите на имя работающей функции и посмотрите, куда она вас приведет, проверьте местоположение версии файла.

  1. Функции могут бытьвнутри предложений $ IFDEF.Это директивы компилятора, и код в таком предложении будет невидим для компилятора, если не выполнено определенное условие.Например, {$ IFDEF MSWindows} Func {$ ENDIF} не будет доступен в Linux.
...