Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2010, 17:04   #1
Yana_
 
Регистрация: 16.10.2010
Сообщений: 5
По умолчанию Программа просмотра PCX-файлов

Нужно написать программу для просмотра графических PCX-файлов. Я новичек в этом деле. Заранее благодарна.
Yana_ вне форума Ответить с цитированием
Старый 16.10.2010, 17:10   #2
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Код:
var
 f:File;
 i,j,z:Word;
 r,g,b,
 pb,pc:Byte;
 xsize,ysize:word;
 Buffer:Array[1..60000] of Byte;
 fpos:Word;
 t:Byte;
Procedure Decode(var pbyt,pcnt:byte);
var i : Byte;
begin
PCnt := 1;
{BlockRead(F,i,1);}
i := Buffer[fpos];
inc(fpos);
If fpos>60000 then begin BlockRead(F,Buffer,60000); fpos := 1; Inc(t) end;
If $C0 = $C0 AND i then begin
pcnt := $3f and i;
{BlockRead(F,i,1);}
i := Buffer[fpos];
inc(fpos);
If fpos>60000 then begin BlockRead(F,Buffer,60000); fpos := 1; Inc(t) end;
end;
pbyt := i;
end;

Procedure PutDot(x,y:word;c:byte);
begin
mem[$A000:y+320*x] := c;
end;
begin
asm
mov ax,13h
int 10h
end;
assign(f,ParamStr(1));
reset(f,1);
seek(f,12);
BlockRead(F,Xsize,2);
BlockRead(F,Ysize,2);
seek(f,filesize(f)-768);
Port[$3c8] := 0;
for i:=0 to 255 do begin
BlockRead(f,b,1);
BlockRead(f,g,1);
BlockRead(f,r,1);
port[$3c9]:=b div 4;
port[$3c9]:=g div 4;
port[$3c9]:=r div 4;
end;
seek(f,128);
BlockRead(F,Buffer,60000);
fpos:=1;
t:=1;
     i := 0;
     j := 0;
     repeat
     Decode(pb,pc);
     for z := 1 to pc do
     begin
     PutDot(j,i,pb);
     inc(i);
     If i > XSize-1 then begin
     i := i - Xsize;
     Inc(j);
     end; end;
     until j = YSize;
Close(F);
asm
xor ah,ah
int 16h
mov ax,3h
int 10h
end;
end.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 27.11.2010, 01:25   #3
Yana_
 
Регистрация: 16.10.2010
Сообщений: 5
По умолчанию

Огромное спасибо! А могли бы Вы, пожалуйста, помочь мне разобраться в переменных? Мне очень сложно прочитать программу....А что делает ассемблерная вставка в конце?
Yana_ вне форума Ответить с цитированием
Старый 27.11.2010, 15:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ещё один вариант (для TurboPascal) - PCX-Sharp 2.01
Цитата:
PCX-Sharp 2.01 - Модуль для Работы с PCX файлами Ivan Kalininskiy
Модуль для вывода на экран PCX изображений
в режимах от 320х200 до 1024х768... (BGI графика).
Приведен пример использования и краткое описание функций.
Programming by VanDamM
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.11.2010, 00:34   #5
Yana_
 
Регистрация: 16.10.2010
Сообщений: 5
По умолчанию

Спасибо за помощь)
Yana_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для просмотра логов трассировки xdebug Виталий Желтяков PHP 0 08.07.2010 22:43
Программа просмотра монитора удаленного компа. stas77 Безопасность, Шифрование 9 08.12.2009 19:23
Программа для просмотра jpg-изображений Dimarik Общие вопросы C/C++ 8 12.07.2009 16:59
Программа просмотра файлов в директории asale Microsoft Office Excel 4 06.01.2009 13:53