Бірнеше нұсқалы жазбалар
Жазба құрамы мен құрылымы өзінің қандай-да бір белгі-өріс
деп аталатын өрісінің мəніне байланысты динамикалық түрде
өзгеруі.
Жалпы түрде алғанда нұсқалы жазбалар келесі түрде жазы-
лады:
TYPE <идентификатор типі >= RECORD
<1 өріс идентификаторы>: <1 тип >;
<2 өріс идентификаторы >: <2 тип >;
. . .
CASE <селектор>:< селектор типі > OF
<1 нұсқа белгісі >:(< 11 нұсқа өрісі>:< 11 тип >
[;<12 нұсқа өрісі >:<тип 12>;< 13 нұсқа өрісі >:< 13 тип >;. . .]);
< 2 нұсқа белгісі >:(< 21 нұсқа өрісі >:< 21 тип >
[;<22 нұсқа өрісі >:<тип 22>;< 23 нұсқа өрісі >:< 23 тип >;. . .]);
< k нұсқа белгісі >:(< k1 нұсқа өрісі >:< k1 тип >
[;<k2 нұсқа өрісі >:< k2 тип >;< k3 нұсқа өрісі >:< k3 тип >;. . .]);
. . .
< m нұсқаның белгісі>:( )
END;
Бұл сипаттамада нұсқа бөлімі 1, 2 ..., өрістері жататын тұрақты
бөлімнен кейін жазылады. Белгі типі селектор типіне сəйкес болу
керек. Егер қандай-да бір нұсқа белгісіне өріс сəйкес келмесе m
нұсқасының белгісіндей бос дөңгелек жақша жазылады.
Келесі құрылымдағы жазбаны сипаттау керек делік. Əр
жазбада: табельдік нөмір жəне фамилия жазылған өрістер бар.
Жаз баның кімге тиісті екендігіне байланысты басқа өрістер
құры лымы өзгеріп отырады:
• студенттер үшін: топ нөмірі жəне мамандық;
151
• мұғалімдер үшін: институт, кафедра, жұмыс стажы;
• қызметкерлер үшін қосымша өріс жоқ.
Жазба құрылымының граф түрінде бейнеленуі:
Сəйкес жазба құрылымы мəндерінің сипаттамасы:
TYPE TZ=RECORD
TN:BYTE;
FIO:STRING;
CASE N:CHAR OF
‘P’: ( IN:BYTE; KAF:STRING; ST:BYTE );
‘S’: ( NG:BYTE; SP:INTEGER );
‘A’: ( )
END;
VAR Z:TZ;
Жазба – өріс деп аталатын, саны нақты компоненттерден
тұратын мəндер құрылымы. Жазбалар əр түрлі, бірақ логикалық
байланысқан мəліметтер үшін қолданылады. Жазбаның əр өрі-
сінің жазбаны сипаттау кезінде берілетін өзіндік аты болады.
Турбо Паскальда жазбалардың екі типі бар: бекітілген өріс-
тер жəне нұсқалы жазбалар.
Бекітілген өрістері бар жазбалар. Бекітілген өрістері бар
жазбаның диаграммасы 6.7-суретте келтірілген.
Тілдің кез келген мəндерінің типі тəрізді жазбаны екі тəсілмен
анықтауға болады:
• айнымалыларды сипаттағанда, мысалы:
Var Zap1,Zap2:record {5 өрістен тұратын
екі жазба}
F,S:real; {нақты типтегі екі өріс}
A,B:integer; {бүтін типті екі өріс}
C:char; {символдық типтегі өріс}
end;
152
Zap3:record {3 өрістен тұратын жазба}
S:string[80]; {ұзындығы 80 байт символдық
жол}
A:array[1..20] of real; {20 нақты эле-
менттен тұратын бірөлшемді жиым}
Flag:boolean; {логикалық типтегі өріс}
end; ...
6.7-сурет. Жазбаларды жариялаудың синтаксистік диаграммасы
• жазба типі алдын ала хабарланады, мысалы:
Type Zt1=record {« 5 өрістен тұратын жаз-
ба» типі}
F,S:real; {нақты типтегі екі өріс}
A,B:integer; {бүтін типті екі өріс}
C:char; {символдық типтегі өріс}
end;
Zt2=record {« 3 өрістен тұратын жазба «
типі}
153
S:string[80]; {ұзындығы 80 байт символдық
жол}
A:array [1..20] of real; {20 нақты эеле-
менттен тұратын бірөлшемді жиым }
Flag:boolean; {логикалық типтегі өріс}
end;
Var Zap1,Zap2:Zt1; {Zt1 типті екі айныма-
лы}
Zap3:Zt2; ... {Zt2 типті айнымалы}
Жазба өрісі ретінде, бастапқыда анықталған немесе жазба
ішінде анықталған басқа жазба да қолданылуы мүмкін. Мысалы:
Type Human=record {қызметкер жайлы жазба}
Fio:record {өріс типі « 3 өрістен тұратын жаз-
ба»}
Fam, {фамилия}
Name, {аты}
Otch:string; {жəне қызметкер тегі}
end; {Fio}
BirthDay:record {өріс типі «3 өрістен тұратын
жазба »}
Day:1..31; {күн}
Month:1..12; {ай}
Year:word; {туған жылы}
end; {Birthday}
end; ... {Human}
немесе
Type Data=record
Day:1..31;
Month:1..12;
Year:word;
end;
Famio=record
Fam,Name,Otch:string;
end;
Human=record {типі «қызметкер жайлы жазба»}
Fio:Famio; {өріс типі Famio}
BirthDay:Data {өріс типі Data}
end; ...
154
Программаның жеке айнымалысы жəне жазба жиымы ретінде де
сип ат тауға болады. Мысалы:
Var Sotr:Human;
Otdel:array[1..20] of Human;
Жазбаларды инициализациялау. Қандай да бір нақты
жазбаға бастапқы мəнді типтік тұрақты арқылы меншіктеуге
болады. Жазба өрістерінің бастапқы мəндері жақша ішінде үтір
арқылы жазылады. Əр өріс үшін оның аты жəне қос нүктеден
кейін мəні жазылады. Мысалы:
Const
BirthDay:Data=(Year:1973; Month:6; Day:30); ...
Жазбалармен орындалатын операциялар. Жазбалармен
төмен де гідей операцияларды орындауға болады.
Жазба өрістерін пайдалану. Мысалы, жоғарыда сипатталған
Human типті, Sotr айнымалы сының өрістеріне келесі жолмен қол
жеткізуге болады:
S o t r . B i r t h D a y . Y e a r : = 2 5 ;
m:=Sotr.BirthDay.Year; ...
Жазба өрістерін бірнеше рет пайдалану керек болса with опера-
то рын қолданған жөн. Мысалы, Human типті, Sotr айнымалы-
сының Day өрісіне with операторы арқылы қол жеткізудің
келесідей нұсқалары бар:
1. with Sotr do BirthDay.Day:=30;
2. with Sotr.BirthDay do Day:=24;
3. with Sotr, BirthDay do Dat:=31;
4. with Sotr do with BirthDay do Day:=7; ...
Жазбаларды меншіктеу. Бұл операция жазба типтері сəйкес
болғанда жəне тізбек бойынша орындалады. Мысалы:
Otdel[i]:=Sotr; ...
Жазбаны пернетақтадан енгізу жəне оларды экранға шығару
осы типке сəйкес айнымалыларды енгізу жəне шығару ережелері
бойынша орындалады.
6.5-мысал. Оқу тобы студенттері жайлы (фамилия жəне
туған жылы) мəліметтерден тұратын жазба жиымын енгізетін
программа құру керек. Фамилиясы пернетақтадан енгізілген
студент жайлы мəліметтер іздеуді ұйымдастыру керек.
155
Program ex;
Type
data=record {“дата жайлы мəліметтер жазбасы ”
типі}
year:word; {жыл}
month:1..12; {ай}
day:1..31; {күн}
end;
zap=record {“студент жайлы жазба” типі}
fam:string[16]; {фамилия}
birthday:data; {туған жылы}
end;
Var fb:array[1..25] of zap; {топ студенттері
жайлы мəндер жиымы}
fff:string; {фамилия енгізуге арналған жол}
i,j,m,n:byte;
key:boolean; {іздеу кілті, егер фамилия табыл-
са - true}
Begin
WriteLn('Студенттер саны жайлы мəлімет
енгізіңіз n<=25');
ReadLn(n);
m:=0;
{бастапқы мəндерді пернетақтадан өрістен кейін
өрісті енгізу}
repeat m:=m+1;
Write(Фамилияны енгізіңіз: '); Readln(fb[m].
fam);
Write(Туған жылын енгізіңіз: '); Readln(fb[m].
birthday.year);
Write(' ай: '); Readln(fb[m].birthday.month);
Write(' күн: '); Readln(fb[m].birthday.day);
until n=m;
WriteLn;
{бастапқы мəндерді экранға with операторының
көмегімен шығару }
Writeln('Топ студенттерінің тізімі'); WriteLn;
156
for i:=1 to m do
with fb[i] do
begin
Write(i:2,fam:17);
with birthday do
WriteLn(year:6,month:4,day:4);
end;
WriteLn;
{мəндерді жазба жиымының ішінен іздеу}
WriteLn('Фамилияны енгізіңіз');
Readln(fff);
i:=0;
key:=false; {«мəндер табылмады « белгісі}
repeat i:=i+1;
if fb[i].fam=fff then key:=true
until key or (i=m);
{вывод результата}
if key then {егер студент табылса, ол жайлы
мəліметтер экранға шығарылады}
with fb[i] do
begin
WriteLn('Студент жайлы мəліметтер:');
Write(fam:18,' ');
with birthday do
WriteLn(day:2,':',month:2,':',year:5,' года');
end
else WriteLn(fff:18,'Студент жайлы мəлімет
жоқ');
End.
Нұсқалы жазбалар. Кейде əртүрлі типті мəліметтерді, кейбір
өрістерінің мəніне қарай, бір жазбаның түрлі нұсқалары ретінде
қарауға тура келеді. Осындай жағдайларды іске асыру үшін жаз-
ба бекітілген өрістер тізімінен басқа, өзермелі бөлімдерден тұруы
мүмкін.
Диаграммадан көріп отырғандай өзгермелі бөлім бірнеше
нұсқадан тұруы мүмкін. Оның əр-қайсысында бір нұсқаға тиісті
157
өрістер тізімі беріледі. Алдын ала əр нұсқаның сəйкестігін тек-
серетін тұрақтысы беріледі
Нұсқалы жазбаларды анықтайтын бірнеше мысалдар қарасты-
райық:
• типті алдын ала сипатталмаған нұсқа:
Type M:record
case {}
byte of {}
0: (by: array[0..3] of byte); {}
1: (wo: array[0..1] of word); {}
2: (lo: longint); {}
end; ...
• типті алдын ала сипаттау арқылы:
Type
Figure=(Square,Triangle,Circle);
{саналушы тип}
Paramf=record {тип –нұсқалы жазба}
X,Y:real; {бекітілген өріс}
case {өзгермелі бөлім}
Fig:Figure of {тұрақтының сəйкестігін
анықтайтын тип жəне айнымалы}
Square: (Side:real);
Triangle: (Side1,Side2,Side3:real);
Circle: (Radius:real);
end;
Var Param:Paramf; {айнымалыны сипаттау}
«Нұсқалы жазба» типі айнымалысының мəні қарапайым жаз-
бадағыдай пернетақтадан енгізу, литерлік тұрақты жəне типтік
тұрақты көмегімен меншіктеледі. Алайда инициалданған ай-
ныма лыны жариялаған кезде өзгермелі бөлім үшін тек бір нұсқа
беріледі.
Мысалы, жазбада адам немесе кеме жайлы мəліметтер бар
делік (Абылай хан – адам жəне кеме аты). Бұл үшін келесі нұсқалы
жазбаны сипаттаймыз.
Type
Forma=record {адамның жəне кеменің тұрақты
орнын анықтайтын жазба}
158
case {өзгермелі бөлім}
boolean of {нұсқаның сəйкестігін тексеретін
тұрақты типі}
{адам үшін нұсқа}
True: (BirthPlace:string[40]; {мекен-жайы}
{кеме үшін нұсқа}
False: (Country:string[20]; {елі}
EntryPort: string[20]; {порт}
EntryDate: array[1..3] of word; {дата}
Count:word) {сиымдылығы}
end; ...
Екі жазбаның бастапқы мəндерін меншіктейтін типтік тұ-
рақты: Object2 – адам жайлы жазба, Object 1 – кеме жайлы
төмендегідей анық талады:
Const
Object1: Forma = (Country: ‘Қазақстан’;
EntryPort: ‘Ақтау’;
EntryDate: (16,3,89);
Count:12);
Object2: Forma = (BirthPlace: ‘Астана’); ...
Барлық нұсқаларда өріс идентификаторлары əр түрлі болуы
керек жəне бекітілген өріс бөлімі атымен сəйкес келмеуі керек.
Нұсқаның сəйкестігін анықтайтын кейбір тұрақты мəндері үшін,
жазбаның өзгермелі бөлімінде өріс болмауы мүмкін. Мұндай
жағдайда қос нүктеден кейін бос тізім «( )» қоюға болады.
Сонымен бірге, нұсқалы жазбаларды пайдаланғанда кейбір
ерекшеліктерді есте сақтау керек:
- Жазба типті айнымалыны орналастыруға жадыдан, əр уа-
қытта нұсқаның ең үлкен көлеміне сəйкес бекітілген көлемді
орны бөлінеді. Демек, əр түрлі нұсқалар жадының бір бөлігінде,
“бірінің орнына бірі” жазылады.
- Турбо Паскаль тілі трансляторының нұсқалы жазбалардың
дұрыс өңделгендігін қадағалайтын ешқандай құралы жоқ. Демек,
кез келген уақытта барлық нұсқалардың кез келген өрісіне қол
жеткізуге болады.
159
- Сақталатын ақпараттардың сəйкестігін жəне оларға қол
жеткізу нұсқаларын программалаушы өзі қадағалауы керек.
Алайда, нұсқалы жазбалардың осы ерекшелігі мəндер типін
айқындалмаған өңдеу үшін қолданылады.
Мысал:
Type
Perem=record {нұсқалы жазба}
case byte of
0: Wo:word; {word типті айнымалы}
1: Lo:longint; {longint типті айнымалы}
2: Re:real; {real типті айнымалы}
end;
Var C:Perem;
Begin ...
C.Lo:=0; {ауданды тазалаймыз}
C.Wo:=10; {нұсқалы өріске шаблон бойынша
таңбасыз бүтін 10 санын жазамыз}
WriteLn(C.Lo:10); ... {нұсқалы өріс мəні ша-
блон бойынша басылып шығады}
Бұл мысалда өріске жадыдан 6 байт орын бөлінеді. Тұтынушы
осы өріспен, жазба өрістерінің сəйкес идентификаторын
қолданып, кез келген үлгі (шаблон) бойынша жұмыс істей алады.
Бақылау сұрақтар
1. Жазба түріндегі мəндер типі дегеніміз не?
2. Жазба қалай хабарланады?
4. Жазба элементтерімен (өрісімен) қандай операциялар орындауға
болады?
5. Жазба мен жиымның айырмашылығы неде?
6. Жазбалармен қандай операциялар орындауға болады?
7. Біріктіру операторының қызметі қандай?
8. Нұсқалы жазба дегеніміз не?
9. Жазбалар қалай қолданылады?
Тапсырмалар
1.
Файлда өз жолдастарыңыз (кем дегенде 5) жайлы жазба-
ларды сақтайтын программа құрастырыңыз. Мəліметтерді
160
шығаруды пернетақтадан енгізілген жазба нөмірі бойынша
ұйымдастырыңыз. Мысалы:
{ Жазба нөмірі: 3
Фамилия: Сəрсенбаев
Аты: Алтынбек
Тегі: Асанұлы
Туған жылы: 1967
Туған айы: 12
Туған күні: 18 }
2. Файлда емтихан нəтижелері жайлы бірнеше (кем дегенде 10)
жазбаны сақтайтын программа құрыңыз. Əр жазба үш өрістен
тұрады: жазба нөмірі, фамилия, баға. Жазбаларды келесідей фор-
мада шығаруды ұйымдастырыңыз:
{ 1 Сəрсенбаев 3 }
3. Файлда күндізгі температура жайлы бірнеше (кем дегенде 10)
жазбаны сақтайтын программа құрыңыз. Əр жазба төрт өріс-
тен тұрады: жазба нөмірі, күн, ай, температура. Жазбалардың
барлығын жəне ең төменгі, ең жоғары температураны экранға
шығарыңыз.
4. Кітаптарда жалпы мəліметтер жазылған файл құрастырыңыз.
Əр кітап жайлы мəлімет: автор фамилиясы, кітап аты, парақ-
тар саны жəне шыққан жылы. Берілген автордың көрсетілген
жылдағы кітабын табыңыз. Автор фамилиясы мен кітаптың
шыққан жылы пернетақтадан енгізіледі.
5. Əртүрлі даталар енгізілген файл құрастырыңыз. Əр дата – күн,
ай жəне жылдан тұрады. Перненің басылуы бойынша сəйкес мə-
ліметтерді шығарыңыз:
F1 – ең кіші жыл;
F2 – барлық даталар;
F3 – ең соңғы дата;
F10 – программадан шығу.
6. Мекеме қызметкерлерінің телефон нөмірлері жазылған файл
құрастырыңыз. Жазбада: қызметкер фамилиясы, аты жəне те-
лефон нөмірі көрсетілген. Қызметкер фамилиясы бойынша оның
телефон нөмірін іздеуді ұйымдастырыңыз.
7. Экспортқа шығарылатын тауарлар жайлы мəліметтер жазыл-
ған файл құрастырыңыз. Жазбада: тауар аты, тауар импорт-
талатын ел жəне экспортық партия көлемі көрсетілген. Тауар
экспортталатын елдер тізімі мен экспорттың жалпы көлемін
анықтаңыз.
161
7. ТУРБО ПАСКАЛЬ ГРАФИКАСЫ
7.1 Graph модулінің жалпы сипаттамасы
Турбо Паскаль компиляторының 4.0 нұсқасынан бастап, оның
құрамына Graph – графика лық ішкі программалар кітапханасы
қосылған болатын. Кітапханада графикалық экранды басқаруға
арналған 50-ден астам əртүрлі процедуралар мен функциялар
бар. Кітапханамен танысу жеңіл болуы үшін мұндағы про цеду-
ралар мен функциялар функционалдық қызметтері бойынша топ-
тастырылған.
Графикалық режимге көшу жəне мəтіндік режимге қай-
тып оралу
Компьютер іске қосылғаннан кейінге стандартты жəне
Турбо Паскаль ортасынан программа жіберуге дейінгі қалып-
күйі экранның мəтіндік режиміне сəйкес келеді. Сондықтан,
компь
ютердің графика
лық құралдарын қолданатын кез келген
прог
рамма, алдымен дисплей адаптерінің графикалық режим
жұмысын іске қосуы керек. Программа жұмысын аяқтағаннан
кейін компьютер мəтіндік режимге қайтып оралады.
Дисплей адаптерлерінің графикалық режим жұмыстары-
ның қысқаша сипаттамасы
Графикалық процедураларды нақты адаптермен жұмыс іс-
теуге лайықтап орындау үшін, қажетті графикалық драйверді іске
қосу керек. Драйвер – компьютердің белгілі бір техникалық құ-
рылғысының жұмысын басқаруға арналған арнайы программа.
Графикалық драйвер – графикалық режимде дисплей адаптері-
нің жұмысын басқарады. Турбо Паскальда барлық типтегі адап-
терлер үшін графикалық драй
вер
лер бар. Олар программалар
ішіндегі жеке BGI ішкі каталогында орналасады, кеңейтілімі BGI
(ағылшынның: Borland Graphics Interface – Borland фирмасының
графикалық интерфейсі) болып келеді. Мысалы, CGA.BGI – CGA
11–1618
162
адаптерге арналған драйвер, EGAVGA .BGI –EGA жəне VGA
адаптерлеріне арналған драйвер жəне т.с.с.
Осы кезде шығарылып жатқан компьютерлер IBM фирмасы-
ның немесе соған сəйкес келетін адаптерлермен жабдықталған.
Қазіргі кезде MDA адаптерінен басқа адаптерлердің барлығының
да графи калық режимде жұмыс істеу мүмкіндігі бар. Бұл режим-
де дисплей экраны өте жиі орналасқан нүктелер – пикселдер
жиыны ретінде қарастырылады. Пикселдердің санын программа
арқылы басқаруға болады.
Нақты адаптердің графикалық мүмкіндіктері экранға, ондағы
пикселдер мен бояу түстері санына байланысты болады. Сонымен
бірге кейбір адаптерлер бірнеше графикалық парақтармен жұмыс
істей алады. Графикалық парақ дегеніміз жедел жадының экран
“картасын” жасауға, дəлірек айтқанда, əр пикселдің көрсетілуі
(түсі) жайлы ақпарат жазылған аймағы. Төменде кең таралған
адаптерлердің графикалық жұмыс режимдерінің қысқаша сипат-
тамасы келтірілген.
CGA адаптері ( Color Graphics Adapter – түрлі түсті графикалық
адаптер) 5 графикалық режимде жұмыс істейді. Оның төрт
режимі – мүмкіндігі төмен жəне тек түстер жиынымен (пали-
тра) ерекшеленетін экрандарға (көлденеңінен 320 пиксел, тігінен
200 пиксел, демек 320x200) арналған. Əр палитра үш түстен, ал
экрандағы қалыпты қара түсті қосқанда төрт түстен тұрады: 0 па-
литра (ашық – жасыл, қызғылт, сары), 1 палитра (ашық – ақшыл
көк,
ақ), 2 палитра (жасыл, қызыл, қоңыр) жəне 3 палитра (ақшыл
көк, күлгін, ашық – сұр). Бесінші ржим – мүмкіндігі жоғары
640x200 нүктелі экран үшін, бірақ мұнда əр пиксел алдын ала
белгіленген бір түске ғана бояла алады немесе мүлде боялмайды.
Бұл палитра тек түрлі түстерден тұрады. Графикалық режимде
CGA адаптері тек бір парақты қолданады.
EGA адаптері (Enhanced Graphics Adapter – кеңейтілген
графикалық адаптер) CGA адаптерінің барлық графикалық ре-
жимдерін қайталай алады. Сонымен бірге мұнда өте төменгі
(640x200, 16 түс, 4 парақ) жəне өте жоғарғы (640x350, 16 түс, 1
парақ) режимдерде жұмыс істеуге болады. Кейбір модификация-
ларда монохромды (640x350, 1 парақ, 2 түс) режимде де жұмыс
істеуге болады.
163
MCGA адаптері ( Multi – Color Graphics Adapter – көптүсті
графикалық адаптер) CGA адаптерімен үйлесімді жəне 640x480,
2түсті, 1 парақ режимі бар. Мұндай адаптерлермен IBM фир-
масының PS/2 дербес компьютерлерінің кіші модельдері жаб-
дықталған. Осы серияның жоғарғы модельдері жақсартылған
VGA адаптерімен ( Video Graphics Array – графикалық бейнежи-
ым) жабдықталған. VGA адаптері CGA жəне EGA адаптерлері-
нің жұмысын толық қайталайды жəне оларды мүмкіндігі өте
жоғары (640x480, 16 түс, 1 парақ) режиммен толықтырады.
Қазіргі кезде супер-VGA адаптерлері (SVGA) кең тараған. Бұл
адаптерлер мүмкіндігі – 800x600 нүктелі, 256 түсті жəне одан да
көп түстерді пайдалана алады. Алайда Graph кітапханасында олар
үшін драйвер жоқ. SVGA адаптері VGA адаптерімен үйлесімді
болғандықтан, қазіргі графикалық адаптерлерді басқару үшін
EGAVGA.BGI драйверлерін қолдануға тура келеді.
Жоғарыда айтылған адаптерлермен бірге Hercules фирма-
сының адаптерлері де көп қолданысқа ие болған. HGC адаптері-
нің мүмкіндгі 720x348, пикселдер бір түске ғана боялады (əдетте
ашық қоңыр) немесе монохромды болып келеді. HGC+ адаптері-
нің HGC адапте рінен айырмашылығы аз, ал HICC (Hercules In
Color Card) адаптері – HGC + адаптерінің 16 түсті кеңейтілген
түрі.
7.2 Графикалық режимді инициализациялау жəне мəтіндік
режимге көшу
InitGraph процедурасы графикалық режимді іске қосады.
Процедура тақырыбының жазылуы:
Procedure InitGraph (var Driver, Mode: Integer; Path:String);
Мұндағы Driver – Integer типті айнымалы, графикалық драйвер
типін анықтайды; Mode – осы типтес айнымалы, графикалық
адаптердің жұмыс режимін анықтайды; Path – драйвер файлының
аты жəне оны іздеу жолы көрсетілген String типті өрнек.
Процедура шақырылардың алдында, дискідегі ақпарат ішінде
графикалық драйвер жазылған файл болуы керек. Процедура
осы драйверді компьютер жедел жадына жүктейді де, адаптерді
графикалық режимге ауыстырады. Драйвер типі графикалық
адаптер типіне сəйкес болуы керек. Драйвер типін көрсету үшін
164
модульде келесі алдын ала анықталған тұрақтылар қолданы
лады:
const
Detect = 0; {типті автоматты анықтау режимі}
CGA = 1;
MCGA = 2;
EGA - 3;
EGA 64 = 4;
EGAMono = 5;
IBM 8514 = 6;
HercMono = 7;
ATT 400 - 8;
VGA = 9;
PC 3270 = 10;
Адаптерлердің көбі əр түрлі режимде жұмыс істей алады.
Адаптерге қажет режимді көрсету үшін Mode айнымалысы
қолданы лады. Процедураны шақырарда айнымалының мəні тө-
мендегі тұрақты лардың бірі бола алады:
const
{ CGA адаптері :}
CGACO =0; {Төменгі мүмкіндік, 0 палитра }
CGAC 1 = 1; { Төменгі мүмкіндік, 1 палитра }
CGAC 2 = 2; { Төменгі мүмкіндік, 2 палитра }
CGAC 3 = 3; { Төменгі мүмкіндік, 3 палитра }
CGAHi = 4; { жоғарғы мүмкіндік }
{ MCGA адаптері: }
MCGACO = 0; { CGACO эмуляциясы }
MCGAC 1 = 1; { CGAC 1 эмуляциясы }
MCGAC 2 = 2; { CGAC 2 эмуляциясы }
MCGAC 3 = 3; { CGAC 3 эмуляциясы)
MCGAMed = 4; { CGAHi эмуляциясы }
MCGAHi = 5; {640x480}
{ EGA адаптері: }
EGALo = 0; {640x200, 16 түс}
EGAHi = 1; {640x350, 16 түс}
EGAMonoHi = 3; {640x350, 2 түс }
{HGC и HGC+ Адаптері: }
|