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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> UNIT expected
сообщение
Сообщение #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 -


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


Гость






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

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


Гость






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


Новичок
*

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

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


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



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


Гость






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

Переименуй файл в 1.pas и попробуй скомпилировать !!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


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

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

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


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


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


Новичок
*

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

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


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

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


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


Гость






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

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


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

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

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


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

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

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


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


Новичок
*

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

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


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

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


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 в текущей папке присутствует?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


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

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

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


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

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

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

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

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


Гость






Добавить:

Var
grDriver : Integer;
grMode : Integer;
ErrCode: Integer; { <--- Вот это ... }
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


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


Гость






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

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


Новичок
*

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

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


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

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


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 )
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Новичок
*

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

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


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

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


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

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

 





- Текстовая версия 27.09.2020 5:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name