zrobiłem procedure która otwiera obojętnie jaki plik i pobiera trzy znaki z niego tworzy z tych zankow kolor rgb i ustawia taki kolor jakiegoś piksela i robi tak az skończy sie plik ...niby easy ale nie wiem czemu nie działa . oto kod :
{w globalnej}
var
bmp:Tbitmap
{a teraz procedura}
procedure konfilbmp;
var
plik:file;
x,y:integer;
buf:array[1..3] of char;
R: byte;
G:byte;
B:byte;
odczytane,pozycja:integer;
begin
if Form1.open.Execute then Form1.edit2.Text:=Form1.open.FileName; //pobiera ciezke pliku do odczytu
if Form1.save.Execute then Form1.edit3.Text:=Form1.save.FileName; //pobiera sciezke do zapisu
try
bmp := TBitmap.Create;
x:=0;
y:=0;
pozycja:=0;
assignfile(plik,Form1.Edit2.Text);
reset(plik);
bmp.Width := 1024;
bmp.Height:= 300; // wczeniej mialem trunc(filesize(plik))/(1024*3))+1
except on exception do
ShowMessage('blad 1');
end;
repeat
try
seek(plik,pozycja);
BlockRead(plik,buf,sizeof(buf),odczytane); //odczytywanie 3 znakow
pozycja:=pozycja+odczytane;
R:=ord(buf[1]); // ustawianie kazdego znaku na r ,g i b
G:=ord(buf[2]);
B:=ord(buf[3]);
bmp.Canvas.Pixels[x,y]:=RGB(r,g,b); //ustawienie piksela na kolor stworzony z rgb
INC(X);
if x=1025 then
begin
x:=0 ;
inc(y);
end;
except on exception do
ShowMessage('blad 2');
end;
until odczytane=0; //kiedy juz nic nie odczutam to koniec
closefile(plik);
bmp.SaveToFile(Form1.Edit3.Text); //zapisz bitmape do pliku
end;
Debugger mowi ,ze wszystko jest ok ale...
wyskakuje mi blad "Access violation at adress 3B646E65. Read of adress 3B646E65" ... o co kaman