Здраствуйте. Нужно сохранить пользовательский экран(а потом его восстановить).Хочу сделать это с помощью видеопамяти var Screen: Array[1..2000,1..2] of byte absolute $B800:0; но как именно это сделать - не знаю(сохранить, а потом восстановить)?
Приветствую Вас, Семен! Тут удобнее всего использовать Move:
Приложение: Ответ отправлен: 25.10.2004, 10:02 Отправитель: Boriss Отвечает Василевский Александр
Добрый день, Семен! Если размеры экрана 80x25 (а обычно так и бывает), то экран нужно объявлять так: Screen: ARRAY [ 1..25, 1..80, 1..2 ] OF BYTE ABSOLUTE $B800:$0000. Копирование можно производить при помощи функции Move: Move( источник, приёмник, размер ). Главное не забыть выделить память для сохранения изображения правильного размера (80*25*2 = 4000 байт). Чтобы такой ошибки не возникло, можно обявить тип - экран и константы - его размеры: CONST ScreenWidth = 80; ScreenHeight = 25; TYPE TScreen = ARRAY [ 1..ScreenHeight, 1..ScreenWidth, 1..2 ] OF BYTE; PScreen = ^TScreen; Тогда объявление экрана: VAR Screen: TScreen ABSOLUTE $B800: $0000; SaveScreen: TScreen; Тогда сохранение экрана быдет выглядеть: Move( Screen, SaveScreen, SIZEOF( TScreen ) ); или даже так: SaveScreen := Screen; Аналогично
выглядит и операция восстановления экрана.
Ответ отправлен: 25.10.2004, 11:27 Отправитель: Василевский Александр Отвечает DSota
Здравствуйте, Семен! var Screen: Array[1..2000,1..2] of byte absolute $B800:0; Buf: Array[1..2000,1..2] of byte; procedure savescreen; begin for i=1 to 80*25 do for j=1 to 2 do Buf[i,j]=Screen[i,j]; end; procedure Restorescreen; begin for i=1 to 80*25 do for j=1 to 2 do Screen[i,j]=Buf[i,j]; end; Ответ отправлен: 22.10.2004, 19:42 Отправитель: DSota Отвечает Strory
Приветствую Вас, Семен! Заведи ещё один массив: Save: array [1..2000,1..2] of byte; Потом в него сохраняй: for i := 1 to 2000 for j := 1 to 2 do Save[i,j] := Screen[i,j]; Чтобы восстановить присваивай наоброт.
Ответ отправлен: 22.10.2004, 20:29 Отправитель: Strory Отвечает sir henry
Приветствую Вас, Семен! Создайте массив с такой же структурой как и у Вашего экрана и можете туда его сохранять. Ответ отправлен: 25.10.2004, 05:48 Отправитель: sir henry
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.