BRS Текстовый файл здесь не пойдет. Используй бестиповый (хотя это тоже извращение, гораздо удобнее работать с getimage / putimage):
Код
uses graph;
procedure save_colors(x1, x2, y1, y2: integer;
s: string);
type
arr = array[1 .. maxint div sizeof(word)] of word;
var
data: ^arr;
i, j, k, size: integer;
f: file;
begin
size := (x2 - x1 + 1)*(y2 - y1 + 1)*sizeof(word);
getmem(data, size);
k := 0;
for i := x1 to x2 do
for j := y1 to y2 do
begin
inc(k); data^[k] := getpixel(i, j);
end;
assign(f, s);
rewrite(f, size);
blockwrite(f, data^, 1);
close(f);
freemem(data, size)
end;
procedure load_colors(x1, x2, y1, y2: integer;
s: string);
type
arr = array[1 .. maxint div sizeof(word)] of word;
var
data: ^arr;
i, j, k, size: integer;
f: file;
begin
size := (x2 - x1 + 1)*(y2 - y1 + 1)*sizeof(word);
getmem(data, size);
assign(f, s);
reset(f, size);
blockread(f, data^, 1);
close(f);
k := 0;
for i := x1 to x2 do
for j := y1 to y2 do
begin
inc(k); putpixel(i, j, data^[k]);
end;
freemem(data, size)
end;
Нашел ошибку, исправил...