Удомельский форум

Удомельский форум (http://second.udomlya.ru/uf/index.php)
-   Программирование (http://second.udomlya.ru/uf/forumdisplay.php?f=26)
-   -   TP (http://second.udomlya.ru/uf/showthread.php?t=800)

Azz 24.05.2006 00:57

TP
 
Вот нашел статью Как вставить BGI дpайвеp в пpогpамму:

Подробное, по шагам, описание технологии встраивания BGI драйверов
в тело паскальной программы.

Как вставить BGI дpайвеp в пpогpамму:

1 шаг:
Конвеpтиpуешь BINOBJ-ем BGI в obj файл

binobj egavga.bgi egavga egavga

2 шаг:
Вставляешь такую диpективу в пpогpамму:

{$L egavga} -- Включить внешний файл

3 шаг:
Объявляешь внешнюю пpоцедуpу EGAVGA

procedure EGAVGA; external;

4 шаг:
Регистpиpуешь ее и дальше pаботаешь как обычно:

procedure OpenGraph;
var
D, M, E: Integer;
begin
if RegisterBGIdriver(@EGAVGA) < 0 then begin
Writeln('Error registering driver: ', GraphErrorMsg(GraphResult));
Halt(1);
end;
DetectGraph(D,M);
InitGraph(D, M, '');
E := GraphResult;
if E <> grOK then begin
Writeln('Open graphics error: ', GraphErrorMsg(E));
Halt(1);
end;
end;
(c)Сеpгей Бадаев
master@oilgas.tyumen.su
Мне не понятно что такое BINOBJ? Если это прога то где её моно взять.

Azz 24.05.2006 01:39

Все сконвертировать смог, но прога почему-то ругается в самом конце:
51 Invalid PUBLIC definition.....(В умной книжке посматрел что за ошибка:Некоректное Public-определение.) А че ето значит непонял ;)

Azz 25.05.2006 20:16

Блмн куда делись все програмёры??? Мне прогу в Субботу здавать нуно... для пущей важности надо запихнуть этот гр****ый egavga в уже скомпилиною прогу. Помогите кто знает???

SAD 26.05.2006 07:49

Прога эта из стандартного набора Турбо-Паскаля версий MS-DOS (ну и других Borland-разработок).

Slyer 26.05.2006 11:57

Ошибка в 37 строке.

Slyer 26.05.2006 11:58

Ты хоть бы код показал.

IGO 26.05.2006 16:12

Объявление внешней процедуры должно быть примерно таким:

program OpenGraph;
uses Graph;
procedure EGAVGA; external;
{$L egavga}

У меня с этим проблем не было.

Azz 26.05.2006 17:32

Блин лана поставлю вопрос по другому кто умеет при компеляции Pascal программы засунуть в неё драйвер egavga? Потому что иначе с прогой приходится таскать этот тупой драйвер.
зы Надеюсь побыстрей услышать ответ т.к. здавать прогу завтро в 9:00

Slyer 26.05.2006 18:25

Посмотрел в интернете, т.к. ничего уже не помню.
Всё, что написано выше должно работать.
1. Ставишь всем egavga.bgi атрибут "только для чтения".
2. Обжимаешь из командной строки "binobj egavga.bgi egavga.obj egavgaDriverProc"
3. Дкларируешь в начале программы {$L EGAVGA.OBJ} Procedure EGAVGADriverProc; External;
4. Далее:

...
Var grDriver, grMode, ErrCode: Integer;
...

Begin
If RegisterBGIDriver(@EGAVGADriverProc) < 0 Then Begin
WriteLn('Error registering driver : ', GraphErrorMsg(GraphResult)); Halt(100)
End;
grDriver := VGA;
grMode := VGAHi;
InitGraph(grDriver, grMode, '');
ErrCode := GraphResult;

If ErrCode <> grOk Then Begin
WriteLn('Graphics error : ', GraphErrorMsg(ErrCode)); Halt(100)
End;
...
End.

Взял отсюда: http://volvo1971.nm.ru/home/faq.htm.

Ошибка 51 может появляться, если ты неправильно точку входа опубликовал при "binobj egavga.bgi egavga.obj egavgaDriverProc". Собственно egavgaDriverProc.

Azz 26.05.2006 20:14

Спасибо, Все получилось =)


Текущее время: 15:16. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot