[delphi] Zapis grafiki i tekstu do jednego pliku

0

jak zapisać do pliku taki rekord

Tjakisrecord = record
obrazek1 : tJpegImage;
obrazek2 : tJpegImagE;
text1 : string;
text2 : string;

var
f file of Tjakisrecord nie działa (nie kompiluje sie)--Pozrowienia {hello}
Waldi Koronowo
[email protected]

0

string jest dynamiczny wiec nie ma mozliwosci zapisania recordu stringow do pliku, bo taki record zawiera tylko uchwyt stringa, a nie sam string. jak nie wierzysz, to sprawdz SizeOf(Tjakisrecord). Podobnie jest zreszta z tjpegimage, chociaz tu kompilator nie ostrzega.

w rekordach nalezy uzywac stringow statycznych, np string[45];

w ogole dla zachowania kompatybilnosci nalezy rekordy zapisywane do plikow definiowac jako packed.

w Twoim wypadku, polecalbym zapis do TFileStream obu obrazkow i obu stringow, oczywsicie poprzedzonych zapisem dlugosci stringow, zeby wiedziec co odczytac. Do zapisu/oczytu obrazkow uzyje metod TJPEGImage, do dlugosci stringow i samych stringow metod TFileStream (ReadBuffer)

--
Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

0

var
f : file;
bufor_obrazka : tmemorystream;
bufor_obrazka2 : tmemorystream;
opek : array[0..1] of string;
begin
opek[0] := 'pierwszy obrazek';
opek[1] := 'drugi obrazek';
bufor_obrazka := tmemorystream.create;
bufor_obrazka2 := tmemorystream.create;
image1.Picture.Bitmap.SaveToStream(bufor_obrazka);
image2.Picture.Bitmap.SaveToStream(bufor_obrazka2);
assignfile(f,'opek.dto');
rewrite(f,1);
seek(f,1);
BlockWrite(f,bufor_obrazka,1);
BlockWrite(f,bufor_obrazka2,2);
BlockWrite(f,opek[0],3);
BlockWrite(f,opek[1],4);
closefile(f);
bufor_obrazka.free;
bufor_obrazka2.free;
end;

to nie działa ale nie chce mi sie tego poprawiac :) znalazlem to gdzies u mnie :)

BTW to nie wykorzystuje recordów (bo nie wiem jak z nuch kozystac)

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