| plen, mx, my : LongInt; { размер плоскости }

Рис. 22.14

- 526 -

| BEGIN

| mx := GetMaxX+1;

| my := GetMaxY+1;

| { размеры плоскости }

| if GetGraphMode = CGAHi { размер буфера: }

| then

| plen := mx*my div 8 + 384 { один бит на точку }

| else { или }

| plen := mx*my div 4 + 384; { два бита на точку }

| GetMem( scr_buf, plen ); { выделение памяти }

| Assign( image_file, file_name ); { связь файлов }

| Rewrite( image_file, plen ); { открытие файла }

| Move( scr_addr, scr_buf^, plen ); { экран – в буфер }

| BlockWrite(image_file,scr_buf^,1); { запись его в файл }

| Close( image_file ); { закрытие файла }

| FreeMem( scr_buf, plen ) { удаление буфера }

| END;

| { Процедура чтения изображения с диска и вывода его на }

| { экран для адаптеров, работающих в режиме CGA }

| PROCEDURE LoadCGAScr(file_name:String );

| {полное имя файла }

| VAR

| image_file : File;

| scr_buf : Pointer; { ссылка на буфер }

| scr_addr:g_plan absolute $8800:0; { память адаптера }

| plen,mx,my: LongInt; { размер плоскости }

| BEGIN

| mx := GetMaxX+1;

| my := GetMaxY+1; { размеры плоскости }

| if GetGraphMode = CGAHi { размер буфера: }

| then

| plen := mx*my div 8 + 384 { один бит на точку }

| else { или }

| plen := mx*my div 4 + 384; { два бита на точку }

| GetMem( scr_buf, plen ); { отводится память }

| Assign( image_file, file_name ); { связь файлов }

| Reset( image_file, plen ); { открытие файла }

| BlockRead(image_file,scr_buf^,1); { чтение картинки }

| Close( image.file ); { закрытие файла }

| Move(scr_buf^,scr_addr, plen); { буфер – на экран }

| FreeMem( scr buf, plen ) { удаление буфера }

| END;

Рис. 22.14 (окончание)

Подобный способ хранения изображений используется в некоторых графических пакетах программ (PBrush, DrHALO). Однако формат записи, используемый в них, другой. Поэтому они не совместимы ни между собой, ни с другими графическими пакетами.

- 527 -

<p>ПРИЛОЖЕНИЕ 1</p><p>Сообщения и коды ошибок, генерируемые компилятором</p>

При обнаружении ошибки компилятор Турбо Паскаля интегрированной среды программирования автоматически загружает исходный файл программы и помещает курсор около ошибки. Компилятор ТРС.ЕХЕ выводит на экран сообщение об ошибке, номер и исходную строку, используя для указания места ошибки символ «^». Учтите, что некоторые ошибки в исходном тексте до определенного времени не обнаруживаются. Если около курсора нет очевидной ошибки, ищите ее слева от курсора или в предыдущем тексте. После выдачи кода ошибки в интегрированной среде нажатие клавиши F1 выдаст комментарий к этому коду.

Ниже даны комментированные коды и сообщения компилятора.

1 Out of memory (выход за границы памяти)

Данная ошибка появляется, если компилятором уже израсходована вся свободная память. Имеется ряд возможных решений этой проблемы:

— если в меню Compile/Destination (Компиляция/Направление) установлено значение Memory (память), измените его на Disk (диск);

— если для параметра Link Buffer в меню Option/Linker (Опция/Редактор связей) в интегрированной среде установлено значение Memory, измените его на Disk; другой путь состоит в размещении директивы {$L-} в начале программы; при работе с транслятором ТРС используйте опцию /L;

— удалите из памяти резидентные программы, в использовании которых нет крайней необходимости;

— если работа осуществляется в среде, попробуйте заменить ее компилятором ТРС.ЕХЕ: он занимает меньше памяти.

Если ни одна из рекомендаций не помогает, то, возможно, программа (модуль) просто слишком велика, чтобы компилировать ее в таком объеме памяти. В этом случае следует разбить ее на два или более программных модуля.

2 Identifier expected (ожидается идентификатор)

Перейти на страницу:

Поиск

Похожие книги