Помощь - Поиск - Пользователи - Календарь
Полная версия: Сохранение экрана
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
ZeroLink
Долго я мучился сохранять содержимое экрана, а потом его востановливать.
И вот получилось:

Это типа VAR
Код
var
 SaveScr: array[1..4000] of Byte; {сохранение экрана}
 Screen: array[1..25,1..80,(CChar, Attr)] of Byte absolute $B800:$0000;{экран}


Ну а вот сохранение:
Код
Move(Screen, SaveScr, SizeOf(SaveScr));


А вот и востановление:
Код
Move(SaveScr, Screen, SizeOf(SaveScr));


Если у Вас есть другие варианты, то выкладывайте :yes:
APAL
Так это только на одно сохранение.
А если будет, скажем, меню многоуровневое?

Я реализовал стековое хранение не всего экрана, а нужных (заданных) участков в динамической памяти.
Очень удобно - прямо как в АСМе - PushWin(x1,y1,x2,y2); и PopWin;
BlackShadow
Цитата
А если будет, скажем, меню многоуровневое?

Это ты про VGA?
Метод вылетит сразу и со свистом.
APAL
BlackShadow
Я про текстовый режим... судя по адресу B800:0000

И при чем тут VGA?
Altair
А в файл BMP не проще сохранять экран ? (ну скажем в граф. режиме.)
а в текстовомрежиме проще в тектсовый файл smile.gif
APAL
Господа! Про графический режим вопрос не стоял!

Oleg_Z
"Сохранять в файл" - и каков выигрыш?
GoodWind
я делал однажды ООП меню - каждая менюшка представляла собой объект, содержащий в себе масив по размеру, занимаемому на екране*2 (для аттрибутов) и конструктор записывал в него всё, что под ней было,
а деструктор это все обратно выводил. это к вопросу о многоуровневом меню
Altair
Цитата
Сохранять в файл" - и каков выигрыш?

В простоте кода. Исключительно в этом.
APAL
Цитата(Oleg_Z @ 20.10.04 7:28)
В простоте кода. Исключительно в этом.

А вот и нет. ;)
Попробуй реализовать менюшку со своим методом...


P.S.: В теме о словах в строках я выложил архив STATIC.RAR - в нем есть модуль MYSERVIS - там должен быть описан мой метод - процедуры PushW и PopW (если не ошибаюсь) - возьми их для сравнения.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.