IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> UNIT expected
Mr. Anderson
сообщение 5.03.2007 23:18
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Установлена операционная система Windows XP PRO.
При проверке программы на Borland Pascal 7.0 выдаёт ошибку UNIT expected. Курсор мигает в начале программы. Программа взята с
Построение любого графика
Думаю, это как то связано с Graph. программы с использованием Crt работают нормально.
 
program grafik;
{$N+}
{$E+}
Uses Graph,crt;
const
{ OPTIONS }
shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;
Var grDriver : Integer;
grMode : Integer;
x,y:real;{extended;}
i:integer;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY);
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY);
x:=lgr;
while x<=pgr do
begin
{ readln(x);}
{***} if x<>2 then begin y:=abs(x/(x-2))-1; {***}
{ writeln(y:1:8);}
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg) end;
x:=x+shag;
end;
readkey;
closegraph;
end.



Помогите исправить ошибку.

Сообщение отредактировано: Mr. Anderson - 8.03.2007 14:24


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.03.2007 23:27
Сообщение #2


Гость






Во-первых, почему здесь? Есть же раздел "Задачи"? А во-вторых, твоя программа у меня компилируется и под BP7 и под TP7 совершенно нормально - что-то у тебя с настройками среды програмирования...

Переезжаем в Задачи...
 К началу страницы 
+ Ответить 
volvo
сообщение 6.03.2007 0:01
Сообщение #3


Гость






Стоп... Вопрос на засыпку: Как называется файл, в котором находится эта программа?
 К началу страницы 
+ Ответить 
Mr. Anderson
сообщение 8.03.2007 12:17
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


файл называется grafik.pas . Находится C:\BP\BIN
Сначала скопировал на BPW, сохранил как graf. Потом открыл в BP. добавил в начале program grafik;
Нажал run >> UNIT expected. Курсор мигает в начале.
Потом напечатал в вручную в BP
File >> Change directory >> C:\BP\BIN
Может здесь нужно что-то поменять?
Я знаю, что программа правильна, всё дело в настройках...



--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.03.2007 12:57
Сообщение #5


Гость






Mr. Anderson, ты опять даешь противоречивую информацию... Тебя спросили, как файл называется, ты начинаешь юлить:
Цитата
файл называется grafik.pas
, однако:
Цитата
Сначала скопировал на BPW, сохранил как graf
Так вот учти, если выяснится, что ты сохранил НЕ как graf, а как GRAPH (чувствуешь разницу, да?) то тебе никто не поможет решить твою проблему, ибо ты в программе делаешь Uses Graph, следовательно, опять же начинает компилироваться ТВОЙ ЖЕ файл, и что? Первое слово, которое компилятор ждет в нем - Unit, у тебя его нет... Ошибка...

Переименуй файл в 1.pas и попробуй скомпилировать !!!
 К началу страницы 
+ Ответить 
Mr. Anderson
сообщение 8.03.2007 15:04
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Да, выяснилось blink.gif ... сохранил как graph.pas свою программу (c другой функцией, другим диапазоном...) до того, как проверял программу из форума...
Удалил этот файл (graph.pas), т.к. по-прежнему выдавало ошибку в программе ( уже 1.PAS) . Теперь новая ошибка. Error 15: File not found (GRAPH.TPU). Курсор мигает на ; в строке Uses Graph, crt;
Этот файл GRAPH.TPU, однако, сейчас после удаления graph.pas , находится по-прежнему в C:\BP\UNITS (он не удалён).
dry.gif Кажется, прийдётся переустанавливать Паскаль... ??? Хотя вряд ли поможет...

Сообщение отредактировано: Mr. Anderson - 8.03.2007 15:41


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 8.03.2007 15:33
Сообщение #7


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


по моему эта программа для FP...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Mr. Anderson
сообщение 8.03.2007 15:36
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Пока мы сейчас проходим Паскаль 7.0 ( с сентября прошлого года)

Сообщение отредактировано: Mr. Anderson - 8.03.2007 15:37


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.03.2007 15:38
Сообщение #9


Гость






Один ответ на 2 предыдущих поста: "Ничего подобного"...

Для compiler: эта программа - для любого компилятора Паскаля, в том числе и для FP...
Для Mr. Anderson: Файл GRAPH.TPU должен присутствововать в текущей папке, или в одной из папок, перечисленных в Options -> Directories -> Unit Directories ...
 К началу страницы 
+ Ответить 
compiler
сообщение 8.03.2007 15:43
Сообщение #10


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 8.03.2007 14:38) *

Для compiler: эта программа - для любого компилятора Паскаля, в том числе и для FP...

да тут я ошибся... у меня и на FP компилируется и на TP...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Mr. Anderson
сообщение 8.03.2007 16:11
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


good.gif Спасибо. Осталось ещё немного:
После исправлений в unit directories (вместо D:\BP\UNITS C:\BP\UNITS, у меня тот же Паскаль установлен и на диске D) нажимаю на >> Run, экран очень быстро показывает чёрный экран (даже не видно график) и мгновенно закрывается, пробовал в конце перед end. поставить readln; ничего не изменилось...

Сообщение отредактировано: Mr. Anderson - 8.03.2007 16:15


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.03.2007 16:18
Сообщение #12


Гость






ReadLn надо ставить НЕ перед End. , а перед CloseGraph... Это во-первых... А во-вторых: уверен, что граф. режим успешно инициализировался? Я бы все-таки это проверял:

...
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
ErrCode := GraphResult;
if ErrCode <> grOk then begin
Writeln('Ошибка: ', GraphErrorMsg(ErrCode)); Readln; Halt(100);
end;
...
Файл EGAVGA.BGI в текущей папке присутствует?
 К началу страницы 
+ Ответить 
compiler
сообщение 8.03.2007 16:54
Сообщение #13


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(compiler @ 8.03.2007 14:43) *

да тут я ошибся...

дело в том что у меня вместо
grDriver, grMode: integer;
стоит строчка
grDriver, grMode: smallint;

какая разница или что такое smallint?

Сообщение отредактировано: compiler - 8.03.2007 16:55


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Mr. Anderson
сообщение 8.03.2007 17:22
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


EVANGA.BGI присутствует ( C:\BP\BGI ).

Сначала ставил просто перед closegraph;
Скомпилировал >> тот же быстро исчезающий чёрный экран.
Потом ставил

ErrCode:=GraphResult;
if ErrCode <> grOk then begin
writeln('Oshibka: ', GraphErrorMsg(ErrCode));
readln;
halt(100);
end;

как показано ниже. { Error 3: Unknown identifier. {курсор на ErrorCode
ErrCode :=GraphResult; } }


program grafika;
{$N+}
{$E+}
Uses Graph,crt;
const
{ OPTIONS }
shag=0.0001;
lgr=-50;
pgr=50;
zcrtX=320;
zcrtY=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
OXYmaxY=200;

Var grDriver:integer;
grMode:integer;

x,y:real;{extended;}
i:integer;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
ErrCode:=GraphResult;
if ErrCode <> grOk then begin
writeln('Oshibka: ', GraphErrorMsg(ErrCode));
readln;
halt(100);
end;
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrtY,colorOXY);
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrtY-i,colorOXY);
x:=lgr;
while x<=pgr do
begin
{ readln(x);}
{***} if x<>2 then begin y:=abs(x/(x-2))-1; {***}
{ writeln(y:1:8);}
putpixel(zcrtX+trunc(x*mtrX),zcrtY-trunc(y*mtrY),colorg) end;
x:=x+shag;
end;
readkey;
readln;
closegraph;
end.

Сообщение отредактировано: Mr. Anderson - 8.03.2007 18:09


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.03.2007 17:42
Сообщение #15


Гость






Добавить:

Var
grDriver : Integer;
grMode : Integer;
ErrCode: Integer; { <--- Вот это ... }
 К началу страницы 
+ Ответить 
Mr. Anderson
сообщение 8.03.2007 18:29
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


BGI Error: Graphics not initialized (use InitGraph)
....................................................................... (повторяется 44-45 раз )
Oshibka: Device driver file not found (EGAVGA.BGI)


Проверил, EGAVGA.BGI на месте в C:\BP\BGI
Unit directories C:\BP\UNITS;
Resource directories C:\BP\UNITS;
Change Directory C:\BP\BIN
GRAPH.TPU в C:\BP\UNITS

Также исправил, где надо, строчные буквы на заглавные для соответствия (oxy >> OXY, y>>Y , кроме, конечно переменных x, y.

Сообщение отредактировано: Mr. Anderson - 8.03.2007 18:46


Прикрепленные файлы
Прикрепленный файл  1.PAS ( 891 байт ) Кол-во скачиваний: 252


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.03.2007 18:47
Сообщение #17


Гость






Цитата
Проверил, EGAVGA.BGI на месте в C:\BP\BGI
Неправильный вывод... ЭТОТ файл должен быть рядом с EXE, в текущей папке !

Добавлено через 2 мин.
Цитата
Также исправил, где надо, строчные буквы на заглавные для соответствия
А вот это совсем лишнее... для Паскаля нет разницы, это NON-case-sensitive язык
 К началу страницы 
+ Ответить 
Mr. Anderson
сообщение 8.03.2007 19:17
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


теперь файл EGAVGA.BGI в папке BIN.
компилируется smile.gif
Только оси без стрелок и обозначений (x, y, 0). unsure.gif
Вопрос:
нужно ли остальные файлы BGI скопировать в BIN (так, если будут другие программы на графику)?

Сообщение отредактировано: Mr. Anderson - 8.03.2007 19:25


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.03.2007 19:51
Сообщение #19


Гость






Цитата
нужно ли остальные файлы BGI скопировать в BIN
Вообще-то я бы крайне не рекомендовал сбрасывать все свои программы в папку \BIN... Это все-таки папка для средства разработки... Создал бы свою папку для программ, и работал бы с ней...

Это первое... Второе - зачем тебе другие BGI? Ты что, собрался делать программу, которая будет работать с любыми драйверами? Сомневаюсь...

Ну, и третье: лучше всего (если ты уже занялся разработкой графических программ), написать вот такой модуль:
Unit BGI;

interface

Procedure EgaVgaDriverProc;
{ Сюда можешь добавить также другие драйверы }

Procedure SmallFontProc;
{ Можно добавить любые другие шрифты }

implementation

{$L EGAVGA.obj}
Procedure EgaVgaDriverProc; External;
{ Не забудь добавить все OBJ файлы и описания внешних процедур сюда }


{$L LITT.obj}
Procedure SmallFontProc; External;
{ Не забудь добавить все OBJ файлы и описания внешних процедур сюда }

begin
If RegisterBGIDriver(@EgaVgaDriverProc) < 0 then Halt(100);
{ Здесь надо зарегистрировать ВСЕ описанные выше драйверы }

If RegisterBGIFont(@smallFontProc) < 0 then Halt(200);
{ Здесь надо зарегистрировать ВСЕ описанные выше шрифты }
end.

, откомпилировать его один раз, а потом просто использовать в программе, не заботясь о присутствии BGI и CHR файлов в текущей папке...

(о том, как преобразовать BGI/CHR в OBJ - читай здесь: Директивы компилятора - про директиву $L )
 К началу страницы 
+ Ответить 
Mr. Anderson
сообщение 8.03.2007 19:58
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Спасибо, попробую. А как поставить стрелки и обозначения? я не нашёл по поиску.

Сообщение отредактировано: Mr. Anderson - 8.03.2007 20:31


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 26.04.2024 17:27
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"