Написал программу с использованием модулей.Всё на 100 % правильно.Компилирую,пишет: "Cannot run a unit" , хотя написал всё правильно.А когда в другой программе пытаюсь использовать его,он пишет,что не найден.В чём ошибка/проблема?!
мисс_граффити
14.05.2007 4:22
Может, прикрепишь этот модуль? Возможно, раз выдает ошибку, что-то все же неправильно...
volvo
14.05.2007 4:31
Цитата
Компилирую,пишет: "Cannot run a unit"
Значит, ты не компилируешь, а запускаешь... А модули нельзя запускать...
Rom1k
15.05.2007 1:29
а как его компилировать,чтобы сохранялся в файле TPU в определенной директории?!
Добавлено через 1 мин. чтобы можно было использовать модуль в определенный момент?!
Renbo
15.05.2007 1:33
Цитата(Rom1k @ 14.05.2007 22:29)
а как его компилировать,чтобы сохранялся в файле TPU в определенной директории?!
ты его запустил, после этого у тебя скомпилировался фаил ИМЯ.o и ИМЯ.PPU в той дериктории, где у тебя лежал исходник. Если хочешь запустить исходную прогу, в которой будет использоваться Модуль, то все файлы должны лежать в одной директори.
volvo
15.05.2007 1:39
В меню зайди Options -> Directories... Там тебя интересуют 2 поля: EXE&TPU Directory - это та папка, куда будут компилироваться EXE и TPU файлы (во что компилировать - Паскаль разберется сам, по исходнику)
И поле Unit Directories - это те пепки, где Паскаль будет искать TPU файлы... Если в это поле добавить через точку с запятой содержимое поля "EXE&TPU Directory", то Паскаль будет искать TPU и в той папке, куда сам их скомпилировал...
Если первое поле оставить пустым, то TPU будет создан в текущей папке...
Добавлено через 2 мин. Renbo, ты разделом не ошибся? Какие *.PPU? Какие *.O? Обязательно еще больше человека запутать?
Renbo
15.05.2007 2:36
Я *.PPU Написал, а хотел *.TPU, описочка, упс
А *.o появляется, если ты модуль в FreePascal компилишь
Rom1k
16.05.2007 2:57
volvo спасибо. А вот ещё вопрс.Я создал модуль,т.е написал его. Что мне с ним делать дальше.Нажимаю ctrl + F9 ,выводит: нажимаю просто F9,выводит вот это: не могу разобратся,что делать дальше.А когда пытаюсь в следующей программе связаться с этим модулем,он мне пишет:
не пойму,что делать дальше(
Добавлено через 7 мин. я не понимаю каие кнопки мне надо нажать и что вообще делать надо далее?
volvo
16.05.2007 4:28
А, вот в чем у тебя дело... У тебя TPU модуля не находится по самой банальной причине: ты компилируешь в память (видишь, в окошке, написано Destination: Memory), а от модуля в памяти проку мало - его запускать же нельзя... Зайди (по-моему) в меню Compile, и если Destination показывает Memory (а оно-таки показывает), то щелкни на Destination, оно изменится на Disk... (Совсем забыл про это, дело все в том, что я использую не TURBO.EXE, а TPX.EXE, там нельзя компилировать в память вообще - только на диск)...
После этого перекомпилируй сначала модуль, а потом - программу... Или сделай Compile -> Make (нажми F9), чтобы все файлы, для которых есть исходники, но нет TPU, перекомпилировались автоматически... Тогда должно работать...
Rom1k
16.05.2007 4:48
Всё сделал,как вы сказали,теперь вот что пишет:
volvo
16.05.2007 4:57
Вот эта папка: D:\PROG\TP7\TPU на диске существует? Или ее нет?
Rom1k
16.05.2007 5:15
Всё.Там моя вина.Н существующий путь был указан.всё работает.вызывающая программа вызывает все модули и правильно работает с ними.спасибо!!!!!
ALma
24.02.2009 2:28
Цитата(Rom1k @ 15.05.2007 21:57)
volvo спасибо. А вот ещё вопрс.Я создал модуль,т.е написал его. Что мне с ним делать дальше.Нажимаю ctrl + F9 ,выводит: нажимаю просто F9,выводит вот это:
Аналогичная ситуация, подскажите пожалуйста. В поле Destination пишет Disk, но все равно при нажатии CTRL+F9, пишет cannot run a unit. Еще вопрос: имя модуля при вызове должно совпадать с именем файла .TPU?
volvo
24.02.2009 2:40
Цитата
все равно при нажатии CTRL+F9, пишет cannot run a unit.
Еще раз повторить? Нельзя запускать модули, что тут непонятного? Ctrl+F9 - это аналог Run -> Run из меню... Тебе надо откомпилировать модуль через Alt+F9, а запускать уже основную программу, кк которой этот модуль подключен...
Цитата
имя модуля при вызове должно совпадать с именем файла .TPU?
Не обязательно... Имя файла TPU может содержать только 8 первых символов от имени модуля. Скажем, я могу в файл REALLYLO.PAS записать вот это:
unit reallylongname;
interfaceimplementationend.
, и откомпилировать. Будет создан файл REALLYLO.TPU, но чтобы подключить модуль я должен использовать полное имя:
uses reallylongname;
При попытке сделать
uses reallylo;
я получу ошибку о несоответствии имени...
ALma
26.02.2009 21:56
Спасибо большое за детальное пояснение. Очень помогло
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.