графический режим Turbo Pascal в Windows XP

freestyle

Хоть режь ты эту XP на части - не хочет в среде Turbo Pascal определять графический режим.
Подскажите, если знаете как в среде TP под XP графику использовать.

Helga87

Из каких соображений сейчас надо использовать TP?

1234567T

работай в 98 винде...
а ты что хотела...все в полне ожидаемо..

otets-mihail

vmware и вперед =)

sirius

#define VGA256 0x13
#define TEXT_MODE 0x03
void Set_Mode (int mode)
{
asm {mov AH, 0
mov AL, BYTE PTR mode
int 10h}
}
Set_Mode (VGA256) - устанавливает режим 320х200, где угодно =)
Set_Mode (TEXT_MODE) - обратно в текстовой.

Volshebnaya

Я не понял, надо запрограммировать графику на пасе под режим VGA?
 
если да, то в исходнике надо подключить:
#include <graphics.h>
 
и в дальнейшем использовать эту графбиблиотеку.
 
графический режим инициализировать так:
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "egavga.bgi")
 
(файл egavga.bgi должен находится в одной папке с компилируемым модулем)
И то, что прога будет запускаться из-под Винды, неважно, она все равно стартует VGA режим.
апд: тьфу, я ж написал для си, а не для паскаля
но в пасе примерно так же

Nastasya483

кстати, Паскаль 6.0, в отличие от распространенных 5.5 и 7.0, имел какие-то проблемы с графическими библиотеками.

yolki

ты не должен этого хотеть ©

apl13

#define VGA256 0x13
#define TEXT_MODE 0x03
void Set_Mode (int mode)
{
asm {mov AH, 0
mov AL, BYTE PTR mode
int 10h}
}
Set_Mode (VGA256) - устанавливает режим 320х200, где угодно =)
Set_Mode (TEXT_MODE) - обратно в текстовой.
Низач0т. Здесь, вроде, писали, что BGI можно прокачать до VGA256, но это еще прокачивать нужно.

sirius

Да ладно, сейчас проверил. Без дополнительных заморочек всё заработало под ХР.

apl13

Блядь, я не говорю, что твой ассемблер не работает (только он как-то долго написан, можно проще, на TP, по кр. мр.).
Я говорю, что у меня сильное подозрение, будто аффтар треда хочет использовать BGI, но не говорит об этом прямо (а говорит косвенно: "Как определить видеорежим?", - имеется в виду вызов процедуры Graph.InitGraph с параметрами grDriver = grInit, grMode = 0, если я правильно помню идентификаторы). BGI в оригинальном виде (непроапгрейженном) не знает 256-цветного режима.

elenangel

короче, проблема в том, что по какой-то причине паскаль не инициализирует графику, если драйвер лежит в БГИ-файле. решение проблемы - компильнуть (или конвертнуть - хз) БГИ-драйвер (конкретно - egavga.bgi) в объектный файл утилитой binobj

C:\BP\BIN>binobj
BIN to OBJ Converter Version 6.0 Copyright (c) 1987,1990 Borland International

Usage: BINOBJ <source[.BIN]> <destination[.OBJ]> <public name>

Examples: BINOBJ GOTH.CHR GOTH GothicFont
BINOBJ CGA.BGI CGADRV CGAdriver
BINOBJ XFILE XFILE ata


далее подключить внешнюю процедуру
и зарегать этот драйвер
он линкуется в ехе-шником и все работает

binobj egavga.bgi egavga.obj MySuperGraphDriver

далее в паскале

{$L egavga.obj}
procedure MySuperGraphDriver; external;
.......
RegisterBGIDriver(@MySuperGraphDriver);
{далее инициализация графики как обычно}
Оставить комментарий
Имя или ник:
Комментарий: