Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите с инициализацией графики
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
LOSOS
Я пытаюсь подключить модуль graph но выдает ошибку: graphics not initializated (use INITgraph)
volvo
BGI файл лежит в той же директории, где и EXE?
LOSOS
Цитата(volvo @ 12.03.2006 21:39) *

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

bgi файл всмысле graph.tpu?
volvo
Нет, в смысле EGAVGA.BGI ...
LOSOS
Цитата(volvo @ 12.03.2006 21:49) *

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

он у меня находиться в папке bgi
LOSOS
все разобрался нада было в директориях написать ссылки
MeatCrash
Цитата(LOSOS @ 13.03.2006 1:08) *

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

А как в этих дирректориях писать ссылки? В каком именно месте их надо писать?
volvo
Запусти Паскаль, в меню Options -> Directories в поле Unit Directories пропиши путь к файлу GRAPH.TPU (если там уже что-то есть - добавь еще один путь через точку с запятой)...
MeatCrash
Всё равно ничего не выходит... 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
А то, что TP это DOS-программа, и не позволяет пробелов в путях, ты не подумал? Ты должен записать путь в формате DOS (8.3 - 8 символов на имя + 3 на расширение)...

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

d:\programs\TP 7.1\BIN\Graph.TPU\
Morfey85
Я графику так инициировал

Код

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
d:\programs\TP 7.1\BIN\ - так надо писать? Значит в TP 7.1 - не должно быть пробела? Так? Если да, то всё равно не работает. Я в папку BIN (где все модули хранятся) скопировал EVAVGA.BGI с самой прогой и убрал дирректории, после этого всё равно ничего не работает. Значит дело не в дирректориях, а в самом невосприятии паскалем графического режима на моей видяхе. Правильно я рассуждаю или нет? mega_chok.gif Кстати, Морфей, у нас с тобой практически полностью идентичные программы, не заметил?
volvo
Во-первых, с каких это пор в папке BIN хранятся не EXE-шники, а модули? Для чего папка UNITS тогда? Что за дистрибутив у тебя? Все в одну папку запихал, что-ли?

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

), то программа ищет EGAVGA.BGI только в текущей директории! А какая у тебя текущая? Попробуй скопировать программу и EGAVGA.BGI в одну папку и запустить программу из Windows Explorer-а или Far-а, но не из IDE Паскаля.
MeatCrash
Цитата(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. Вот, кидаю архив этого паскаля со всеми примерами и работами.
Morfey85
Посмотрел что у тя там написано,
И сделал то что ты хотел по своему.
Я сделал процедуру для инициации графики
Вобщем посмотри сам.
MeatCrash
Спасибо!!! Что бы я без тебя делал. good.gif Блин, даже не думал, что с графикой могут быть такие напряги. mega_chok.gif Ещё вопрос: может это глюк, что у меня отображается 297 скачиваний моего паскаля? Как-то странно за 1 день столько раз...
MeatCrash
Заметил одну неполадку: когда диагональ должна пересекать экран по диагонили, её низ едва достигает середины экрана по горизонтали, а по вертикали всё нормально. Координаты
line(0,0,639,479);
Ты знаешь в чём проблема?
klem4
Делай наверняка ...

line(0, 0, GetMaxX, GetMaxY);
GoodWind
вспомнился еще один глюк ТП (и, скорее всего БП) - если у bgi-файла установлен атрибут read-only, то графика не инициализируется...
Morfey85
Проблема может быть в мониторе, у меня на работе широкий ТФТ монитор стоти
при работе в графике на паскале расширеие 640х3.. вобщем нижнюю часть не показывает
MeatCrash
У меня ЭЛТ LG. Думаю, не из-за этого. klem4, сенкс, всё работает. good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.