![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 22.12.2008
Сообщений: 4
|
![]()
Нормально компилируется, но выдает ошибку "cannot run a unit"
Привожу текст программы для компиляции trans1.tpu unit trans1; interface Type Transport=object S,stoim:real; Procedure Init(s1:real); end; Autobus=object(Transport) bustype:integer; bag:integer; bust:real; Constructor Init(bustype1, bag1:integer; s1,bust1:real); Destructor Done;virtual; Procedure Stoimost; virtual; end; Poezd=object(Transport) raintype: integer; ctype:integer; rst:integer; raint:real; Constructor Init(raintype1,ctype1,rst1:integer; s1,raint1:real); Destructor Done;virtual; Procedure Stoimost; virtual; end; Samolet=object(Transport) airt:integer; clairs:integer; airts:real; Constructor Init(airt1, clairs1:integer; s1,airts1:real); Destructor Done;virtual; Procedure Stoimost; virtual; end; implementation Procedure Transport.Init(s1:real); begin S:=s1; End; Constructor Autobus.Init(bustype1,bag1:integer; s1,bust1:real); Begin Transport.Init(s1); bustype:=bustype1; bag:=bag1; bust:=bust1; End; Destructor Autobus.Done; Begin End; Constructor Poezd.Init(raintype1,ctype1,rst1:in teger; s1,raint1:real); Begin Transport.Init(s1); Raintype:=raintype1; Ctype:=ctype1; Rst:=rst1; Raint:= raint1; End; Destructor Poezd.Done; Begin End; Constructor Samolet.Init(airt1,Clairs1:integer; s1,airts1:real); Begin Transport.Init(s1); airt:=airt1; clairs:=Clairs1; airts:=airts1; End; Destructor Samolet.Done; Begin End; Procedure Autobus.Stoimost; Begin stoim:= bustype*50 + bag*100+bust + 1.1 * S; writeln(stoim); End; Procedure Poezd.Stoimost; Begin stoim:= raintype*50 + ctype*30 + rst*55+ raint + 1.02*S; writeln(stoim); End; Procedure Samolet.Stoimost; Begin stoim:= airt*100+clairs*120 + airt + 3.7*S; End; End. А это текст основной программы под именем trans.pas Uses Crt,trans1; var: trans_type:integer; rasstoyanie: real; Procedure Autobus_Stoim() Begin Writeln (‘Введите тип автобуса’); Writeln (‘0. ПАЗ’); Writeln (‘1. Икарус’); Writeln (‘2. Мерседес’); Readlin (bustype1); Writeln (‘Имеется ли багаж? ’); Writeln (‘0. Нет’); Writeln (‘1. Да’); Readln (bag1); Readln (‘Введите другие сборы ’, bust1); Autobus.Init(bustype1,bag1,s1,bust1 ); Autobus.Stoimost; - End; Procedure Poezd_Stoim() Begin Writeln (‘Введите тип поезда’); Writeln (‘0. Пассажирский’); Writeln (‘1. Скорый’); Writeln (‘2. Фирменный’); Readln (raintype1); Writeln (‘Введите тип вагона ’); Writeln (‘0. Общий’); Writeln (‘1. Плацкартный’); Writeln (‘2. Купейный’); Writeln (‘3. Мягкий’); Readln(ctype1); Writeln (‘Укажите тип обслуживания’); Writeln (‘0. Обычный’); Writeln (‘1. Эконом’); Writeln (‘2. Коммерческий’); Readln(rst1); Readln (‘Введите другие сборы ’, raint1); Poezd.Init(raintype1,ctype1,rst1,s1 ,raint1); Poezd.Stoimost; Procedure Samolet_Stoim() Begin Writeln (‘Введите тип самолета’); Writeln (‘0. Ан-124’); Writeln (‘1. Ту-154’); Writeln (‘2. Ту-204’); Readln (raintype1); Writeln (‘Введите класс места ’); Writeln (‘0. Эконом’); Writeln (‘1. Коммерческий’); Writeln (‘2. Первый’); Readln(clairs1); Readln (‘Введите другие сборы ’, airts1); Samolet.Init(airt1,Clairs1,s1,airts 1); Samolet.Stoimost; End; Begin clrscr; writeln ('Введите тип транспорта:'); writeln ('1. Автобус'); writeln ('2. Поезд'); writeln ('3. Самолет'); read(trans_type); clrscr; (writeln 'Введите расстояние в км'); read(rasstoyanie); case trans_type of 1 : Autobus_Stoim; 2 : Poezd_Stoim; 3 : Samolet_Stoim; else exit end; End. Все выходные потратил на написание этого кода, компилируется нормально, но вот упорно выдает ошибку "cannot run a unit". Хотя в меню Compile указал Destination ->Disk, Primary file -> trans.pas |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]() Цитата:
Вот сразу две ошибки, дальше не смотрел. var: trans_type:integer; Procedure Autobus_Stoim() |
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 22.12.2008
Сообщений: 4
|
![]()
"Invalid procedure or function reference"
в месте основной программы помеченной жирным шрифтом Пожалуйста подскажите , что в чем моя ошибка? Привожу исправленные тексты программ {файл trans.pas для создания trans.tpu} unit trans; interface Type transport=object s,stoim:real; Procedure Init(s1:real); end; autobus=object(transport) bustype:integer; bag:integer; bust:real; Constructor Init(bustype1, bag1:integer; s1,bust1:real); Destructor Done;virtual; Procedure stoim_bilet; virtual; end; poezd=object(transport) raintype: integer; ctype:integer; rst:integer; raint:real; Constructor Init(raintype1,ctype1,rst1:integer; s1,raint1:real); Destructor Done;virtual; Procedure stoim_bilet; virtual; end; samolet=object(Transport) airt:integer; clairs:integer; airts:real; Constructor Init(airt1, clairs1:integer; s1,airts1:real); Destructor Done;virtual; Procedure stoim_bilet; virtual; end; implementation Procedure transport.Init(s1:real); begin s:=s1; End; Constructor autobus.Init(bustype1,bag1:integer; s1,bust1:real); Begin transport.Init(s1); bustype:=bustype1; bag:=bag1; bust:=bust1; End; Destructor autobus.Done; Begin End; Constructor poezd.Init(raintype1,ctype1,rst1:in teger; s1,raint1:real); Begin transport.Init(s1); raintype:=raintype1; ctype:=ctype1; rst:=rst1; raint:= raint1; End; Destructor poezd.Done; Begin End; Constructor samolet.Init(airt1,Clairs1:integer; s1,airts1:real); Begin transport.Init(s1); airt:=airt1; clairs:=Clairs1; airts:=airts1; End; Destructor samolet.Done; Begin End; Procedure autobus.stoim_bilet; Begin stoim:= bustype*50 + bag*100+bust + 1.1 * S; writeln(stoim); End; Procedure poezd.stoim_bilet; Begin stoim:= raintype*50 + ctype*30 + rst*55+ raint + 1.02*S; writeln(stoim); End; Procedure samolet.stoim_bilet; Begin stoim:= airt*100+clairs*120 + airt + 3.7*S; End; End. {файл основной программы prog.pas} Uses Crt,tran; var trans_type:integer; rasst: real; Procedure autobus_stoim_bilet; var bustype1,bag1:integer; s1,bust1:real; Begin writeln ('‘Введите тип автобуса’'); writeln ('‘0. ПАЗ’'); writeln ('‘1. Икарус’'); writeln ('‘2. Мерседес’'); readln (bustype1); writeln ('‘Имеется ли багаж? ’'); writeln ('‘0. Нет’'); writeln ('‘1. Да’'); readln (bag1); readln (bust1); autobus.Init(bustype1,bag1,s1,bust1 ); autobus.stoim_bilet; End; Procedure poezd_stoim_bilet() Begin writeln (‘Введите тип поезда’); writeln (‘0. Пассажирский’); writeln (‘1. Скорый’); writeln (‘2. Фирменный’); readln (raintype1); writeln (‘Введите тип вагона ’); writeln (‘0. Общий’); writeln (‘1. Плацкартный’); writeln (‘2. Купейный’); writeln (‘3. Мягкий’); readln(ctype1); writeln (‘Укажите тип обслуживания’); writeln (‘0. Обычный’); writeln (‘1. Эконом’); writeln (‘2. Коммерческий’); readln(rst1); readln (‘Введите другие сборы ’, raint1); poezd.Init(raintype1,ctype1,rst1,s1 ,raint1); poezd.stoim_bil; Procedure samolet_stoim_bilet() Begin writeln (‘Введите тип самолета’); writeln (‘0. Ан-124’); writeln (‘1. Ту-154’); writeln (‘2. Ту-204’); readln (raintype1); writeln (‘Введите класс места ’); writeln (‘0. Эконом’); writeln (‘1. Коммерческий’); writeln (‘2. Первый’); readln(clairs1); readln (‘Введите другие сборы ’, airts1); samolet.Init(airt1,Clairs1,s1,airts 1); samolet.stoim_bil; End; Begin clrscr; writeln ('Введите тип транспорта:'); writeln ('1. Автобус'); writeln ('2. Поезд'); writeln ('3. Самолет'); read(trans_type); clrscr; (writeln 'Введите расстояние в км'); read(rasstoyanie); case trans_type of 1 : autobus_stoim_bilet; 2 : poezd_stoim_bilet; 3 : samolet_stoim_bilet; else exit end; End. Буду очень признателен за подсказку |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]()
Вот здесь например не присвоено значение s1. Дальше по тексту объявлены процедуры со скобками, а параметры не объявлены.
autobus.Init(bustype1,bag1,s1,bust1 ); |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите с задачей разобраться | r3krut | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 16.12.2007 15:43 |