Własny format obrazków - problem

0

Mam problem z programem do konwersji obrazków BMP do mojego własnago formatu i z programem do odczytu tych obrazków, który działa pod DOSem.
W skrócie kod wygląda tak:
Ten kod Turbo Pascala (image-shower):

  procedure ShowPic(x, y : Integer; Filename : String);
  var f : Text; l : String; i,j,k,c :Integer;
  begin
   Assign(f, FileName);
   Reset(f);
   j := x-1;
   k := y;
   While not eof(f) do begin
    Readln(f, l);
    if l[i]='n' then j := j+1;
    k := y;
    i := 0;
    repeat
     i := i+1;
     k := k+1;
     c := 9;
     Case l[i] of
      { Wielka litera oznacza pojasnienie! }
      '0' : c := white;

      '1' : c := black;
      'r' : c := red;
      'g' : c := green;
      'b' : c := blue;
      'y' : c := yellow;
      'R' : c := lightred;
      'G' : c := lightgreen;
      'B' : c := lightblue;
      '2' : c := lightgray;
      '3' : c := darkgray;
     end;
     if c <> 9 then PutPixel(k,j,c);
   until (l[i] = 'n') or (l[i] = '') ;
  end;
 end;

Ten kod Delphi (konwertor):

procedure TForm1.SpeedButton2Click(Sender: TObject);
var i,j,k : Integer; l : String; z : Char; pc : TColor;
begin
Memo1.Lines.Clear;
For i := 1 to Image1.Picture.Height do begin
 j := 0;
 For k := 1 to Image1.Picture.Width do begin
  j := j+1;
  z := ' ';
  pc := Image1.Canvas.Pixels[j,i];
  Case pc of
   clWhite : z := '0';
   clBlack : z := '1';
   clMaroon: z := 'r';
   clGreen : z := 'g';
   clNavy  : z := 'b';
   clYellow: z := 'y';
   clRed   : z := 'R';
   clLime  : z := 'G';
   clBlue  : z := 'B';
   clSilver: z := '2';
   clGray  : z := '3';
  end;
  if pc = ColorBox1.Selected then z := ' ';
  l := l + z;
  if k = Image1.Picture.Width then break;
 end;
 WriteLineToMemo(l);
 l := '';
end;
end;

procedure TForm1.WriteLineToMemo(s : String);
var d, i, j : Integer; t : String;
begin
d := length(s);
if d <= 254 then begin Memo1.Lines.Add(s); Memo1.Lines.Add('n'); exit; end;
for i := 1 to d do begin
 j := j+1;
 t := t+s[i];
 if j > 254 then begin Memo1.Lines.Add(t+'n'); j := 0; t := ''; end;

end;
end;

Link dla bardziej zainteresowanych - http://adiblol.w.interia.pl/problemimage.zip - znajdziesz tu kod programu z TPascala i Delphi.

<font size="4">// Z góry dzięki za pomoc</span> :) !

0

Moze jakieś wyjasnienia?.. Co nie działa , co jest nie tak, opis tegoż :|

0

Reader zwraca uwagę tylko na część pixeli (szerokość), nie wiem jak z wysokością, writer nie ma problemów, tylko się troszeczke wlecze (ale to jest oczywiste).

PS. Przypominam, że w TPascalu String może mieć maxymalnie 255 znaków [!!!]

0

to nie czytaj przez readln, tylko while not eoln(f) do ... read(c) ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1