Помощь - Поиск - Пользователи - Календарь
Полная версия: Модули
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Rom1k
Написал программу с использованием модулей.Всё на 100 % правильно.Компилирую,пишет: "Cannot run a unit" , хотя написал всё правильно.А когда в другой программе пытаюсь использовать его,он пишет,что не найден.В чём ошибка/проблема?!
мисс_граффити
Может, прикрепишь этот модуль?
Возможно, раз выдает ошибку, что-то все же неправильно...
volvo
Цитата
Компилирую,пишет: "Cannot run a unit"
Значит, ты не компилируешь, а запускаешь... А модули нельзя запускать...
Rom1k
а как его компилировать,чтобы сохранялся в файле TPU в определенной директории?!

Добавлено через 1 мин.
чтобы можно было использовать модуль в определенный момент?!
Renbo
Цитата(Rom1k @ 14.05.2007 22:29) *

а как его компилировать,чтобы сохранялся в файле TPU в определенной директории?!


ты его запустил, после этого у тебя скомпилировался фаил ИМЯ.o и ИМЯ.PPU в той дериктории, где у тебя лежал исходник. Если хочешь запустить исходную прогу, в которой будет использоваться Модуль, то все файлы должны лежать в одной директори.
volvo
В меню зайди Options -> Directories... Там тебя интересуют 2 поля: EXE&TPU Directory - это та папка, куда будут компилироваться EXE и TPU файлы (во что компилировать - Паскаль разберется сам, по исходнику)

И поле Unit Directories - это те пепки, где Паскаль будет искать TPU файлы... Если в это поле добавить через точку с запятой содержимое поля "EXE&TPU Directory", то Паскаль будет искать TPU и в той папке, куда сам их скомпилировал...

Если первое поле оставить пустым, то TPU будет создан в текущей папке...

Добавлено через 2 мин.
Renbo, ты разделом не ошибся? Какие *.PPU? Какие *.O? Обязательно еще больше человека запутать? mad.gif
Renbo
Я *.PPU Написал, а хотел *.TPU, описочка, упс rolleyes.gif

А *.o появляется, если ты модуль в FreePascal компилишь
Rom1k
volvo спасибо. А вот ещё вопрс.Я создал модуль,т.е написал его. Что мне с ним делать дальше.Нажимаю ctrl + F9 ,выводит:
Изображение
нажимаю просто F9,выводит вот это:
Изображение
не могу разобратся,что делать дальше.А когда пытаюсь в следующей программе связаться с этим модулем,он мне пишет:
Изображение

не пойму,что делать дальше(

Добавлено через 7 мин.
я не понимаю каие кнопки мне надо нажать и что вообще делать надо далее?
volvo
А, вот в чем у тебя дело... У тебя TPU модуля не находится по самой банальной причине: ты компилируешь в память (видишь, в окошке, написано Destination: Memory), а от модуля в памяти проку мало - его запускать же нельзя... Зайди (по-моему) в меню Compile, и если Destination показывает Memory (а оно-таки показывает), то щелкни на Destination, оно изменится на Disk... (Совсем забыл про это, дело все в том, что я использую не TURBO.EXE, а TPX.EXE, там нельзя компилировать в память вообще - только на диск)...

После этого перекомпилируй сначала модуль, а потом - программу... Или сделай Compile -> Make (нажми F9), чтобы все файлы, для которых есть исходники, но нет TPU, перекомпилировались автоматически... Тогда должно работать...
Rom1k
Всё сделал,как вы сказали,теперь вот что пишет:
Изображение
blink.gif blink.gif blink.gif
volvo
Вот эта папка: D:\PROG\TP7\TPU на диске существует? Или ее нет?
Rom1k
Всё.Там моя вина.Н существующий путь был указан.всё работает.вызывающая программа вызывает все модули и правильно работает с ними.спасибо!!!!!
ALma
Цитата(Rom1k @ 15.05.2007 21:57) *

volvo спасибо. А вот ещё вопрс.Я создал модуль,т.е написал его. Что мне с ним делать дальше.Нажимаю ctrl + F9 ,выводит:
Изображение
нажимаю просто F9,выводит вот это:
Изображение



Аналогичная ситуация, подскажите пожалуйста. В поле Destination пишет Disk, но все равно при нажатии CTRL+F9, пишет cannot run a unit.
Еще вопрос: имя модуля при вызове должно совпадать с именем файла .TPU?
volvo
Цитата
все равно при нажатии CTRL+F9, пишет cannot run a unit.
Еще раз повторить? Нельзя запускать модули, что тут непонятного? Ctrl+F9 - это аналог Run -> Run из меню... Тебе надо откомпилировать модуль через Alt+F9, а запускать уже основную программу, кк которой этот модуль подключен...

Цитата
имя модуля при вызове должно совпадать с именем файла .TPU?
Не обязательно... Имя файла TPU может содержать только 8 первых символов от имени модуля. Скажем, я могу в файл REALLYLO.PAS записать вот это:
unit reallylongname;
interface
implementation
end.
, и откомпилировать. Будет создан файл REALLYLO.TPU, но чтобы подключить модуль я должен использовать полное имя:
uses reallylongname;
При попытке сделать
uses reallylo;
я получу ошибку о несоответствии имени...
ALma
Спасибо большое за детальное пояснение. Очень помогло
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.