Тұрақтының атауы
|
Код
|
Шешім
|
Палитра
|
Беттерді қолдау
|
CGA драйвері
|
CGAC0
|
0
|
320x200
|
C0
|
1
|
CGAC1
|
1
|
320x200
|
C1
|
1
|
CGAC2
|
2
|
320x200
|
C2
|
1
|
CGAC3
|
3
|
320x200
|
C3
|
1
|
CGAHi
|
4
|
640x200
|
2 түс
|
1
|
MCGA драйвері
|
MCGAC0
|
0
|
320x200
|
C0
|
1
|
MCGAC1
|
1
|
320x200
|
C1
|
1
|
MCGAC2
|
2
|
320x200
|
C2
|
1
|
MCGAC3
|
3
|
320x200
|
C3
|
1
|
MCGAMed
|
4
|
640x480
|
2 түс
|
1
|
MCGAHi
|
5
|
640x480
|
2 түс
|
1
|
EGA драйвері
|
EGALo
|
0
|
640x200
|
16 түс
|
4
|
EGAHi
|
1
|
640x350
|
16 түс
|
2
|
EGA64 драйвері
|
EGA64 Lo
|
0
|
640x200
|
16 түс
|
1
|
EGA64Hi
|
1
|
640x350
|
4 түс
|
1
|
EGA-MONO драйвері
|
EGAMonoHi
|
3
|
640x350
|
2 түс
|
1
|
EGAMonoHi
|
3
|
640x350
|
2 түс
|
2
|
HERC драйвері
|
HERCMonoHi
|
0
|
720x348
|
2 түс
|
2
|
ATT400 драйвері
|
ATT400C0
|
0
|
320x200
|
C0
|
1
|
ATT400C1
|
1
|
320x200
|
C1
|
1
|
ATT400C2
|
2
|
320x200
|
C2
|
1
|
ATT400C3
|
3
|
320x200
|
C3
|
1
|
ATT400CMed
|
4
|
640x200
|
2 түс
|
1
|
ATT400CHi
|
5
|
640x400
|
2 түс
|
1
|
VGA драйвері
|
VGALo
|
0
|
640x200
|
16 түс
|
2
|
VGAMed
|
1
|
640x350
|
16 түс
|
2
|
VGAHi
|
2
|
640x480
|
16 түс
|
1
|
PC3270 драйвері
|
PC3270Hi
|
0
|
720X350
|
2 түс
|
1
|
IBM8514 драйвері
|
IBM8514Lo
|
0
|
640x480
|
256 түс
|
1
|
IBM8514Hi
|
0
|
1024x768
|
256 түс
|
1
|
Кестенің 4-ші бағанында түстер туралы ақпарат көрсетілген.
Графикалық амалдың қателігі
Графикалық амалдарды орындау кезінде әртүрлі қателіктер болуы мүмкін (мысалы, видеоадаптерді анықтай немесе драйверді таба алмады). Егер қателік болса, оның сипатын анықтауға GraphResult функциясы көмектеседі.
GraphResult функциясы соңғы орындалған графикалық амал қателігінің кодын береді. Тақырыбы:
Function GraphResult: Integer;
Қателік кодын Graph модулінің келесі процедуралары мен функциялары орнатады:
Bar, Bar3D, ClearViewPort, CloseGraph, Detect Graph, DrawPoly, FillPoly, FloodFill, Get GraphMode, ImageSize, InitGraph, InstallUserDriver, InstallUserFont, PieSlice, RegisterBGIdriver, RegisterBGIfont, SetAllPalette, SetFillPatterrn, SetFilllStyle, SetGraphBufSize, SetGraphMode, SetLineStyle, SetPalette, SetTextJustify, SetTextStyle.
GraphResult функциясы қайтаратын мәндер Graph модулінде жарияланған тұрақтылармен анықталады.
Графикалық амалдардың қателіктерінің тұрақтылары мен кодтары 3-кестеде көрсетілген.
3-кесте
Тұрақты атауы
|
Код
|
Текстік хабарлама
|
grOk
|
0
|
Қатесіз
|
grNoInitGraph
|
-1
|
Графикалық режим инициализацияланбаған
|
grNotDetected
|
-2
|
Адаптер типін анықтай алмады
|
grFileNotFound
|
-3
|
Драйверлі файл табылмады
|
grInvalidDriver
|
-4
|
Табылған файл сәйкес драйверден тұрмайды
|
GrNoLoadMem
|
-5
|
Драйверді жүктеуге жады жеткіліксіз
|
grNoScanMem
|
-6
|
Аймақтарды қарауға жады жеткіліксіз
|
grNoFloodMem
|
-7
|
Аймақтарды толтыру үшін жады жеткіліксіз
|
grFontNotFound
|
-8
|
Қаріптері бар файл табылмады
|
grNoFontMem
|
-9
|
Қаріпті жүктеуге жады жеткіліксіз
|
grInvalidMode
|
-10
|
Таңдалынған драйверге мүмкін емес режим
|
grError
|
-11
|
Жалпы қателік
|
grIOerror
|
-12
|
Енгізу-шығару қателігі
|
grInvalidFont
|
-13
|
Қаріптің дұрыс емес форматы
|
grInvalidFontNum
|
-14
|
Қаріптің дұрыс емес номері
|
GraphResult функциясын шақырғанда графикалық амалдың қателігінің кодын шақырады, және де бұл кезде жүйеде қателік коды 0-ге (grOk) орнатылады. Егер соңынан GraphResult функциясын қайта шақырса, онда осы нәтиже (grOk) қайтарылады.
GraphResult функциясының нәтижесінен қателік сипатын ұғу қиын болады. Сондықтан Turbo Pascal-да GraphErrorMsg функциясы қарастырылған. Оның параметрі ретінде GraphResult функциясы қайтарған код көрсетіліп, нәтижесі сәйкес қателік туралы экранға шығарылатын хабарлама болып табылады.
GraphErrorMsg функциясы оның сандық коды бойынша қателік туралы хабарлама мәтінін (ағылшын тілінде) қайтарады. Тақырыбы:
Function GraphErrorMsg(ErrorCode:Integer):string;
Мұндағы, ErrorCode - GraphResult функциясы қайтарған қателік коды.
Төмендегі мысалдағы программа барлық қателіктердің сандық кодтарын және оларға сәйкес хабарламаларды экранға шығарады.
Program GrErMsg;
Uses Graph;
Var i:integer;
Begin
For i:=0 to 14 do
Writeln(-i:3, ‘=’, GraphErrorMsg(-i));
End.
Қолданылатын графикалық режим туралы ақпарат
Осы мезетте қандай графикалық режим (DetectGraph процедурасы арқылы таңдалынған) қолданылып тұр? Қандай графикалық драйвер қолданылып тұр? Осы графикалық адаптер үшін қолданылған драйвердің қай графикалық режимін мейлінше қолдануға болады. Графикалық программаларды құру кезінде көбінесе осындай сұрақтарға жауапты білу қажет болады. Осы мәліметтерді анықтауға GetModeName, GetDriverName, GetMaxMode процедуралары көмектеседі.
GetModeName функциясы графикалық режим қолданатын тұрақтының атауын қайтарады. Тақырыбы:
Function GetModeName(ModeNumber:Integer):string;
Мұндағы ModeNumber – графикалық режимнің коды.
GetDriverName функциясы осы мезетте драйверлер қолданып тұрған файлдың атауын (кеңейтілусіз) көрсетеді (яғни, .BGI-файлдар). Тақырыбы:
Function GetDriverName:string;
GetMaxMode функциясы ең мүмкін графикалық режимнің кодын береді. Тақырыбы:
Function GetMaxMode: Integer;
GetMaxMode функциясы осы қолданылған адаптер жұмыс істей алатын ең мүмкін графикалық режимнің (жүктелген графикалық режимнің) кодын анықтауға мүмкіндік береді.
Төмендегі мысалдан GetModeName, GetDriverName, GetMaxMode функциялары қолданылған программаны көресіздер:
Program ModDrive;
Uses graph;
Var i,j,k,Err:integer;
Begin
I:=Detect;
Initgraph(i,j,’ ‘);
Err:=GraphResult;
If Err<>grOk then
Writeln(GraphErrorMsg(Err))
Else
For k:=0 to GetMaxMode do
Begin
Writeln(‘драйвер:’, GetDriverName, ‘; Режим: ‘, GetModeName(k));
End;
Readln;
CloseGraph;
End.
Бұл программада графикалық режимге өтуді келесі операторлар жүзеге асырады:
I:=Detect;
Initgraph(i,j,’ ‘);
Графикалық режимге өтуде қателік жіберілгенін тексеру келесі түрде жүзеге асырылады:
Err:=GraphResult;
If Err<>grOk then
Writeln(GraphErrorMsg(Err))
Else...
Мұндай тексеру графикалық режим қолданылатын әрбір программада қарастырылу керек (GraphResult функциясы дәл осыған арналған).
Әрі қарай GetModeName, GetDriverName және GetMaxMode функцияларының көмегімен қажетті ақпарат анықталып (драйвер файлының атауы және мүмкін графикалық режимдер тізімі), экранға шығарылады.
Мұндай программаны іске қосқаннан кейін графикалық режим қосылып, жұмыс нәтижелері графикалық экранға шығарылады. Бұл нәтижелерді көру үшін ең дұрысы программаға параметрсіз Readln операторын қосқан дұрыс. Нәтижесінде программа пернетақтадан енгізуді тосып, экрандағы бейнені көруге мүмкіндік бере отырып, жұмысты тоқтата тұрады. Программа жұмысын жалғастыру үшін пернесін басу жеткілікті.
Ең соңында графикалық режимдегі видеоадаптердің жұмысын аяқтайтын CloseGraph процедурасы шақырылады.
Графикалық драйверлер режимі
Алдыңғы тақырыпта қолданылатын графикалық режимдер және графикалық драйверлер туралы қажетті ақпаратты анықтау қажеттігі туралы сөз болды. Осындай есепті GetModeRange процедурасы орындайды. Ол берілген драйвер үшін мүмкін графикалық режимдер туралы ақпаратты береді.
GetModeRange процедурасы көрсетілген графикалық драйвер үшін мүмкін графикалық режимдердің кодтарының диапазонын береді. Тақырыбы:
Procedure GetModeRange(Driver:Integer; var MinMode, MaxMode:Integer);
Мұндағы Driver – берілген графикалық драйвер коды; MinMode -«ең кіші» режим коды; MaxMode – шектік режим коды.
Егер Driver – параметрінің мәні қате болса, онда MinMode және MaxMode айнымалылары -1 мәнін қайтарады.
GetModeRange процедурасын қолданар алдында графикалық режимге өту міндетті емес.
Төмендегі мысалдан GetModeRange процедурасын қолдануды көруге болады:
Program ModeRange;
Uses Graph;
Const
D:array[1..11] of String[8]=
(‘CGA ‘,’MCGA ‘, ‘EGA ‘,’EGA64 ‘, ‘EGAMono’, ‘IBM8514 ‘,’HercMono ‘, ‘ATT400 ‘, ‘VGA ‘,’PC3270 ‘,’ERROR ‘);
Var i,j,k:integer;
Begin
Writeln;
Writeln(‘Driver’, ‘MinMode’:11, ‘MaxMode’:10);
Writeln(‘---------------------------------------------’);
For i:=1 to 11 do
Begin
GetModeRange(I,j,k);
Writeln(d[i],j:6,k:10)
End;
End.
Программа нәтижесі:
Бұл программада денесінде GetModeRange процедурасы шақырылған цикл ұйымдастырылған, және де цикл параметрінің мәні процедураға оның Driver – параметрінің мәні ретінде беріледі. Осы процедура берген минималды жәнен максималды режимдер мәндері әрбір драйвер үшін экранға жол түрінде беріледі. Нәтижесінде мәндер кестесі жасалады. Бұл кестені анығырақ ету үшін программада тұрақтылар массиві жарияланды, оның элементтері драйверлердің әріптік белгіленуі болып табылатын string типті мәндер. Бұл белгілеулер кестенің бірінші бағанында көрсетілген.
GetModeRange процедурасының драйвер кодының мүмкін емес мәніне қалай жауап қататынын тексеру үшін цикл саны 11-ге дейін көбейтілді (1..10-драйверлердің мүмкін кодтары). Нәтижесінде мүмкін емес мән (11) үшін GetModeRange процедурасы MinMode және MaxMode параметрлері үшін -1 мәнін берді.
Достарыңызбен бөлісу: |