Перетворення форматів графічних файлів
end;
curx:=0;
end;
Коли ми зчитали увесь рядок у буфер, час його записати. Але через те, що RGB дані у PCX форматі розбиті на площини, запис йде з трьох точок буферу, що поступово зміщуються. Зауважте обернений формат запису триплетів у форматі BMP, спочатку йде B, потім G, а потім R. У кінці ми переводимо вказівник знову на початок буферу.
end;
writeln;
close(PCXF);
close(BMPF);
Закінчили читати файл й записувати тимчасовий.
Починаємо перевертання тимчасового файлу у нормальний формат BMP.
assign(PCXF, 'dollar.tmp');
reset(PCXF, 1);
assign(BMPF, 'dollar.bmp');
rewrite(BMPF, 1);
Спочатку, як завжди, відкриємо файли. Врахуйте, що тимчасовий файл відкривається змінною, що раніше відповідала PCX файлу. Так зроблено для мінімізації кількості змінних.
blockread(PCXF, BMPheader, 54);
blockwrite(BMPF, BMPheader, 54);
Зчитаємо й запишемо заголовок без змін. Будемо зчитувати файл по рядкам з кінця, а записуватимемо з початку.
for i:=1 to HGT do begin
Як не дивно, зчитувати рядки потрібно стільки раз, скільки у нас рядків.
pos1 := filesize(PCXF)-(BPL*3*i);
Визначається позиція кожного рядку у файлі: від кінця файлу віднімаємо i рядків довжиною BPL*3 (*3 тому, що RGB).
gotoxy(1, wherey); write(pos1); clreol;
Просто виводимо цю позицію на екран.