Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите подключить Graph.tpu
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Scope
Так и не нашёл подходящей темы для этого вопроса. Надеюсь меня простят.
Я уже устал подключать этот грёбаный юнит.
Мне нужно зделать домаху до пятницы, а у меня ещё ничего не готово. Всё дело в том, что нам по заданию нужно пользоваться графикой через модуль Praph.tpu. В классе в универе он работает, а вот дома отказывается. Вначале паск. не находил модуль, но я это исправил, записав адрес в Options\Directories. (не бойтесь, досовской 8.3 системой) указал название файлов и папок. Даже если паск. находит модуль, он стопорится на строке
Код
if PraphResult <> gr0k then halt(1);

Паскаль я знаю всего три месяца, поэтому смысл ошибки определить не могу. Прошу о помощи, пожалуйста помогите мне подключить по-нормальному этот модуль. Даже если я скачаю д/з через и-нет, чужие проги всё равно пахать не будут. Заранее очень благодарен.
volvo
Scope
Во-первых, что значит "стопорится"?
Цитата
...смысл ошибки определить не могу
О какой ошибке речь?

Единственное, что можно предположить - это то, что в той папке, где находится твоя программа, нет файла "EGAVGA.BGI"... Скопируй его туда из TP\BGI и попробуй еще раз запустить программу. Если не поможет, напиши, что за ошибка...
Scope
ЕгуВэгу я уже копировал, не помогает. А ошибка... скорее всего GraphResult это какого-то рода проверка на то, удалось подключить граф или нет, но это только моё предположение. Я слышал, есть вариант скопировать и поставить модуль из других версий. Кстати, забыл сказать. У меня стоит WinXPю SP1
Бродяжник
Цитата
через модуль Praph.tpu.

Цитата
if PraphResult <> gr0k then halt(1);

Как модуль-то называется? Praph?
volvo
Scope
Ну я тебе поэтому и говорю: напиши, что говорит система (замени твой фрагмент вот этим, и приведи реакцию программы...)
Код

var ErrorCode: integer;
...
InitGraph(GrDriver, GrMode, '');
ErrorCode := GraphResult;
if ErrorCode <> grOk then
 begin
   Writeln('Graphics error:');
   Writeln(GraphErrorMsg(ErrorCode)); ReadLn; Halt(1);
 end;


Бродяжник
Тогда это не должно даже компилиться blink.gif
Scope
Device Error.
Device Driver File not found (EGAVGA.BGI)

Файл находился в папке с программой.

Бродяжник Не Praph, а Graph, это моя очепятка.
Digitalator
Цитата
Файл находился в папке с программой.

А должен быть в Object Directory - см настройки

ЗЫ: если ехе-шник и obj в одной папке, то при запуске ехе-шника, все должно работать.
BRS
раскопируй EGAVGA.BGI пор всем папкам )))
Altair
Я например не понимаю суть обсуждаемого вопроса - не проще скинуть вообще все в TP7 в одну папку? там не так много файлов, опять же при инициализации графики указывается путь к драйверу явно.

Да и в IDE TP не стоит писать программы, работающие в граф. режиме.
Дело в том, что основная функция IDE 0отладка теряется при этом...
Так что компилируйте в EXE и уже тестируйте прогармму... так точно не будет проблемм с посиком пути к драйверу
Scope
А если даже exe'шники не пашут?
volvo
Scope
Что-то мне кажется, что у тебя происходит попытка инициализирования другого режима... Скопируй-ка все BGI файлы в директорию с программой... Кстати, а каким компилятором пользуешься?
Altair
Нет, главный вопрос - "ты какой режим графический пытаешься инициализировать?"
Попробуй так:

Код
var
gd,gm:integer;

begin
gd=detect;
initgraph(gd,gm,'');
{..}
end.
Scope
у меня gd уже задаётся детектом, это я ставил, но здесь не указывал.
Блин, мож мне лучше код напишете? lol.gif Мне надо ханойские башни зделать и пятнашки, мать их...
volvo
Scope
Цитата
Прошу о помощи, пожалуйста помогите мне подключить по-нормальному этот модуль. Даже если я скачаю д/з через и-нет, чужие проги всё равно пахать не будут.

Забыл? :D
Altair
Лучшй ты выложи свой код (ни лли часть кода).
Scope
Код
program hanoi;
uses crt;
var n,k:byte;
   key:char;

procedure moveonedisk (TA,TC:char);
begin write (TA,'=>',TC,';',' ');
end;

procedure hanoitower (n:byte;TA,TB,TC:char);
begin
if n=1 then moveonedisk (TA,TC)
else
  begin
  hanoitower (n-1,TA,TC,TB);
  moveonedisk (TA,TC);
  hanoitower (n-1,TB,TA,TC);
  end
end;
begin
clrscr;
write ('Enter disc number');
repeat
readln(n);
until (n > 0) and (n < 9);
hanoitower (n,'A','B','C');
key:=ReadKey;
end.


это алгоритм раскладывания башен, на экран выводится, какие диски куда класть. Это мне надо превратить в графику.

А пятнашки слишком здоровые.

2volvo: что забыл? huh.gif
volvo
Scope
Алгоритм-то как раз не нужен... Он пишется за пару минут. Ты бы лучше привел тот код, который у тебя не проходит...

Oleg_Z
:P
Altair
Нет, я имею ввиду покажи код, где ты пытаешься инициализировать графику....
Scope
2volvo
Цитата
Oleg_Z :P
:D
В общем, откомпилированный exe в папке pascal\bgi попёр. В любом случае спасибо. Теперь помогите мне зделать так, чтобы у меня ntvdm модуль XP'шницкий нормально пёр. А то у меня Dos приложения запускаются один раз. Второй раз запускается только ntvdm, но он не инициализирует прогу и дос-окно с названием "ntvdm-[куча случайных цифр]" остаётся открытым. Лечится перезагрузкой. Но это же долго при каждом тесте программы перезагружать комп, а потом ещё раз, чтобы паскаль запустить.
Altair
Scope, что -то я не понял...

Цитата
ntvdm

это что?
volvo
NT Virtual DOS Machine :P
Altair
volvo, все, ухожу...
smile.gif
FreeMan
переставь винду
volvo
Может быть, это поможет?
Цитата
Почему не запускаются Win16 программы?

В том что Win16 приложения не запускаются, оставляя после себя пустую ntvdm возможны следующие причины:
1. Возможно, вы слишком перегрузили переменные окружения (%PATH%), либо прописали эту переменную в файле autoexec.nt.
2. Файл command.com поврежден, уничтожен, или заменен на файл другой версии. Для исправления восстановите вашу инсталяцию Windows NT, и переставьте последнюю версию Service Pack
3. Файл ver.dll уничтожен, поврежден или перезаписан файлом другой версии
4. В файле autoexec.nt (лежит в %systemroot%\system32\) стоит вызов программы share.exe (или vshare.exe)
5. Возможно отведено слишком мало места под переменные окружения, для исправления ситуации попробуйте вставить в файл config.nt следующую строку: shell=%systemroot%\system32\command.com /p /e:4096
Scope
Огромное спасибо, Вольво. Я обязательно посомтрю...
adm28
Там такая тема что
надо все файлы скопировать в папку, где будет компиться
прога из папки BGI

Перед тем, как ответить, желательно прочитать то, что уже написано.
Это был первый ответ...
volvo
Оля
Люди!!! Как подключается модуль GRAPH ? huh.gif
файлы egavga.bgi и graph.tpu у меня скопированы везде,где только можно.
в Опции-Директории-Unit -указан путь к graph.tpu .....и все равно не работает!
Пишет либо "file not found graph.tpu" ,либо " BGI Error: Graphics not Initialized (use Initgraph) "
Что делать? sad.gif
Altair
у файла egavga.bgi атрибуты проверь - если есть ReadOnly (только чтение) - сними!
Оля
Цитата(Oleg_Z @ 23.01.05 0:11)
у файла egavga.bgi атрибуты проверь - если есть ReadOnly (только чтение) - сними!

 

В атрибутах стояло "архивный"- сняла- все равно не работает...ошибка та же
unsure.gif
volvo
Чем пыталась компилировать?
Altair
какая операциоанная система?
если XP или 2000 то, не зубедте переключить в полноэкранный режим (ALT+ENTER) перед запуском.

А код можете привести?
ту часть где графика инициализируется.
Оля
Кусок программы:

Код
uses graph;
 var d,m:integer;
begin d:=0;m:=0;
initgraph(d,m,'c:\bgi\egavga.bgi');
...
readln;
closeGraph;
end.
Altair
да, все ясно.
Напишите вместо
Код
d:=0;m:=0;
вот это:
Код
d:=detect; m:=0;

ошибка исчезнет, если вы правильно указали путь к драйверу. И вообще лучше не полный путь указывать а просто '' - и драйвер в той-же директории что и бинарник...
на стадии написания кода и отладки можно и полностью указывать путь...
Оля
:D УРА! Спасибо огромное! Теперь работает! :P
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.