Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Помогите с инициализацией графики

Автор: LOSOS 13.03.2006 1:18

Я пытаюсь подключить модуль graph но выдает ошибку: graphics not initializated (use INITgraph)

Автор: volvo 13.03.2006 1:39

BGI файл лежит в той же директории, где и EXE?

Автор: LOSOS 13.03.2006 1:42

Цитата(volvo @ 12.03.2006 21:39) *

BGI файл лежит в той же директории, где и EXE?

bgi файл всмысле graph.tpu?

Автор: volvo 13.03.2006 1:49

Нет, в смысле EGAVGA.BGI ...

Автор: LOSOS 13.03.2006 1:52

Цитата(volvo @ 12.03.2006 21:49) *

Нет, в смысле EGAVGA.BGI ...

он у меня находиться в папке bgi

Автор: LOSOS 13.03.2006 3:08

все разобрался нада было в директориях написать ссылки

Автор: MeatCrash 16.04.2006 16:49

Цитата(LOSOS @ 13.03.2006 1:08) *

все разобрался нада было в директориях написать ссылки

А как в этих дирректориях писать ссылки? В каком именно месте их надо писать?

Автор: volvo 16.04.2006 16:58

Запусти Паскаль, в меню Options -> Directories в поле Unit Directories пропиши путь к файлу GRAPH.TPU (если там уже что-то есть - добавь еще один путь через точку с запятой)...

Автор: MeatCrash 16.04.2006 17:39

Всё равно ничего не выходит... mega_chok.gif В Unit Directories прописал следующее: "d:\programs\TP 7.1\BIN\Graph.TPU" - всё равно не робит. Пробовал убирать последний слеш ('GRAPH.TPU'), тоже не прокатывает. Но дело не только в этом, если я пограмму переношу туда, где она должна по дефолту сохранятся (папка BIN), то она всё равно не работает. Вот её код, может найдёшь ошибку? Если нужна информация о видяхе, то у меня она называется Radeon 9600SE.

Program Exampl_8;
Uses Graph;
Var
Gd,Gm:integer;
Begin
Gd:=VGA;
Gm:=VGAhi;
InitGraph(Gd,Gm,'d:\programs\TP 7.1\BGI\EGAVGA.BGI');
If GraphResult=grOK Then
begin
line(0,0,639,479);
readln;
CloseGraph;
end
Else
writeln('It,s not work!!!');
readln;
End.

Автор: volvo 16.04.2006 17:49

А то, что TP это DOS-программа, и не позволяет пробелов в путях, ты не подумал? Ты должен записать путь в формате DOS (8.3 - 8 символов на имя + 3 на расширение)...

И не надо прописывать АДРЕС ФАЙЛА. Сказано было - ПУТЬ к файлу, имя файла не должно участвовать! У тебя же нет директории

d:\programs\TP 7.1\BIN\Graph.TPU\

Автор: Morfey85 16.04.2006 18:33

Я графику так инициировал

Код

Procedure InitGr;
var
  GrDr,GrMode,ErrorCode:Integer;
begin  {InitGr}
  GrDr:=Detect;
  InitGraph(GrDr, GrMode, '');
  ErrorCode := GraphResult;
  if ErrorCode <> grOk then
  begin
    Writeln('Graphics error: ', GraphErrorMsg(ErrorCode));
    Readln; Halt(1);
  end;
end;  {InitGr}


и все работало хорошо

А файл EGAVGA.BGI у меня лежит скопированый в папке с прогой.

Автор: MeatCrash 16.04.2006 21:15

d:\programs\TP 7.1\BIN\ - так надо писать? Значит в TP 7.1 - не должно быть пробела? Так? Если да, то всё равно не работает. Я в папку BIN (где все модули хранятся) скопировал EVAVGA.BGI с самой прогой и убрал дирректории, после этого всё равно ничего не работает. Значит дело не в дирректориях, а в самом невосприятии паскалем графического режима на моей видяхе. Правильно я рассуждаю или нет? mega_chok.gif Кстати, Морфей, у нас с тобой практически полностью идентичные программы, не заметил?

Автор: volvo 16.04.2006 22:13

Во-первых, с каких это пор в папке BIN хранятся не EXE-шники, а модули? Для чего папка UNITS тогда? Что за дистрибутив у тебя? Все в одну папку запихал, что-ли?

Это первое. Второе: ты программу прямо из Паскаля запускать пытался? А уверен, что директория \BIN для твоей программы является текущей? Ведь если ты "убрал директории" (я надеюсь, ты имел в виду что ты вызывал

InitGraph(Gd, Gm, '');

), то программа ищет EGAVGA.BGI только в текущей директории! А какая у тебя текущая? Попробуй скопировать программу и EGAVGA.BGI в одну папку и запустить программу из Windows Explorer-а или Far-а, но не из IDE Паскаля.

Автор: MeatCrash 17.04.2006 9:38

Цитата(volvo @ 16.04.2006 21:13) *

Во-первых, с каких это пор в папке BIN хранятся не EXE-шники, а модули? Для чего папка UNITS тогда? Что за дистрибутив у тебя? Все в одну папку запихал, что-ли?

Это первое. Второе: ты программу прямо из Паскаля запускать пытался? А уверен, что директория \BIN для твоей программы является текущей? Ведь если ты "убрал директории" (я надеюсь, ты имел в виду что ты вызывал
InitGraph(Gd, Gm, '');

), то программа ищет EGAVGA.BGI только в текущей директории! А какая у тебя текущая? Попробуй скопировать программу и EGAVGA.BGI в одну папку и запустить программу из Windows Explorer-а или Far-а, но не из IDE Паскаля.

Я всё так и сделал:
InitGraph(Gd, Gm, '');
Файл EGAVGA.BGI я как раз и скопировал в папку с программой и сама программ расположена в бине(то бишь в корневой). Windows Explorer - это проводник? Если да, то и через него открывал - не работает всё равно. Наверное, ты не учёл того, что у меня ТурбоПаскаль 7.1. Вот, кидаю архив этого паскаля со всеми примерами и работами.


Прикрепленные файлы
Прикрепленный файл  TP_7.1.rar ( 1.52 мегабайт ) Кол-во скачиваний: 475

Автор: Morfey85 17.04.2006 22:16

Посмотрел что у тя там написано,
И сделал то что ты хотел по своему.
Я сделал процедуру для инициации графики
Вобщем посмотри сам.


Прикрепленные файлы
Прикрепленный файл  pak.rar ( 19.87 килобайт ) Кол-во скачиваний: 207

Автор: MeatCrash 18.04.2006 7:03

Спасибо!!! Что бы я без тебя делал. good.gif Блин, даже не думал, что с графикой могут быть такие напряги. mega_chok.gif Ещё вопрос: может это глюк, что у меня отображается 297 скачиваний моего паскаля? Как-то странно за 1 день столько раз...

Автор: MeatCrash 18.04.2006 8:29

Заметил одну неполадку: когда диагональ должна пересекать экран по диагонили, её низ едва достигает середины экрана по горизонтали, а по вертикали всё нормально. Координаты

line(0,0,639,479);
Ты знаешь в чём проблема?

Автор: klem4 18.04.2006 11:10

Делай наверняка ...

line(0, 0, GetMaxX, GetMaxY);

Автор: GoodWind 18.04.2006 11:13

вспомнился еще один глюк ТП (и, скорее всего БП) - если у bgi-файла установлен атрибут read-only, то графика не инициализируется...

Автор: Morfey85 18.04.2006 11:15

Проблема может быть в мониторе, у меня на работе широкий ТФТ монитор стоти
при работе в графике на паскале расширеие 640х3.. вобщем нижнюю часть не показывает

Автор: MeatCrash 18.04.2006 11:50

У меня ЭЛТ LG. Думаю, не из-за этого. klem4, сенкс, всё работает. good.gif