Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на языке Pascal

Выпуск № 335
от 25.10.2004, 18:30

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 533
Отправлено ответов: 2031
Активность: 381.0 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Boriss
Статус: Профессиональный
Общий рейтинг: 156.96
URL: Программирование на Паскале
[Подробней >>]
Василевский Александр
Статус: Опытный
Общий рейтинг: 116.71
[Подробней >>]
DSota
Статус: Доверительный
Общий рейтинг: 125.35
[Подробней >>]
 
Strory
Статус: Опытный
Общий рейтинг: 163.63
URL: МУАТ
Телефон: +7 (845-3) 54-16-74
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 163.68
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 532. Здраствуйте. Нужно сохранить пользовательский экран(а потом его восстановить).Хочу сделать это с пом... (ответов: 5)

Вопросов: 1, ответов: 5


 Вопрос № 532

Здраствуйте.
Нужно сохранить пользовательский экран(а потом его восстановить).Хочу сделать это с помощью видеопамяти
var
Screen: Array[1..2000,1..2] of byte absolute $B800:0;
но как именно это сделать - не знаю(сохранить, а потом восстановить)?



Вопрос отправлен: 22.10.2004, 18:24
Отправитель: Семен

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Приветствую Вас, Семен!
Тут удобнее всего использовать 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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (26)
C / C++ (16)
Perl (8)
Builder / Delphi (19)
Pascal (21)
Basic / VBA (9)
Java / JavaScript (6)
PHP (18)
Криптография (8)
WinAPI (16)
Радиоэлектроника (15)
Пользователю
Windows 95/98/Me (43)
Windows NT/2000/XP (63)
"Железо" (39)
Поиск информации (21)
Администратору
Windows NT/2000/XP (37)
Linux / Unix (14)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (6)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.





http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное