libbysharf
asked on
Wrapping several .png files into one file
Hello,
I am trying to take some .png files and put them in one file, which will also specify the position of the start and end of each file in the big file (so that I can recover them afterwards).
The idea is to do something like a zip file.
I'm not very familiar with operating binary files, so any help would be great!
Thanks, Libby
I am trying to take some .png files and put them in one file, which will also specify the position of the start and end of each file in the big file (so that I can recover them afterwards).
The idea is to do something like a zip file.
I'm not very familiar with operating binary files, so any help would be great!
Thanks, Libby
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I think I did it a bit easier.
This is the code :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
FileDetails = record
name : array[0..7] of char;
size : integer;
end;
var
Form1: TForm1;
FileDetailsArray : array[0..9] of FileDetails;
implementation
{$R *.DFM}
procedure FileSave;
var
FromF, ToF: file;
NumRead, NumWritten: Integer;
Buffer: array[1..2048] of Byte;
count : integer;
begin
AssignFile(ToF,'AllPng.gnp
Rewrite(ToF, 1);
seek(ToF,sizeof(FileDetail
AssignFile(FromF,'91827E42
Reset(FromF, 1);
count:=0;
repeat
BlockRead(FromF, Buffer, SizeOf(Buffer), NumRead);
BlockWrite(ToF, Buffer, NumRead, NumWritten);
count:=count+NumRead;
until (NumRead = 0) or (NumWritten <> NumRead);
FileDetailsArray[0].name:=
FileDetailsArray[0].size:=
AssignFile(FromF,'91842E42
Reset(FromF, 1);
repeat
BlockRead(FromF, Buffer, SizeOf(Buffer), NumRead);
BlockWrite(ToF, Buffer, NumRead, NumWritten);
count:=count+NumRead;
until (NumRead = 0) or (NumWritten <> NumRead);
FileDetailsArray[1].name:=
FileDetailsArray[1].size:=
AssignFile(FromF,'91858E42
Reset(FromF, 1);
repeat
BlockRead(FromF, Buffer, SizeOf(Buffer), NumRead);
BlockWrite(ToF, Buffer, NumRead, NumWritten);
count:=count+NumRead;
until (NumRead = 0) or (NumWritten <> NumRead);
FileDetailsArray[2].name:=
FileDetailsArray[2].size:=
seek(ToF,0);
BlockWrite(ToF, FileDetailsArray, sizeof(FileDetailsArray), NumWritten);
CloseFile(FromF);
CloseFile(ToF);
end;
procedure FileLoad;
var
FromF, ToF: file;
NumRead, NumWritten: Integer;
Buffer: array[1..2048] of Byte;
count : integer;
begin
AssignFile(ToF,'re1.png');
Rewrite(ToF, 1);
AssignFile(FromF,'AllPng.g
Reset(FromF, 1);
BlockRead(FromF,FileDetail
count:=0;
repeat
if (count+SizeOf(Buffer))>Fil
begin
BlockRead(FromF, Buffer,FileDetailsArray[0]
BlockWrite(ToF, Buffer, NumRead, NumWritten);
count:=count+NumRead;
end
else
begin
BlockRead(FromF, Buffer, SizeOf(Buffer), NumRead);
BlockWrite(ToF, Buffer, NumRead, NumWritten);
count:=count+NumRead;
end;
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(ToF);
AssignFile(ToF,'re2.png');
Rewrite(ToF, 1);
count:=0;
repeat
if (count+SizeOf(Buffer))>(Fi
begin
BlockRead(FromF, Buffer,FileDetailsArray[1]
BlockWrite(ToF, Buffer, NumRead, NumWritten);
count:=count+NumRead;
end
else
begin
BlockRead(FromF, Buffer, SizeOf(Buffer), NumRead);
BlockWrite(ToF, Buffer, NumRead, NumWritten);
count:=count+NumRead;
end;
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(ToF);
AssignFile(ToF,'re3.png');
Rewrite(ToF, 1);
count:=0;
repeat
if (count+SizeOf(Buffer))>(Fi
begin
BlockRead(FromF, Buffer,FileDetailsArray[2]
BlockWrite(ToF, Buffer, NumRead, NumWritten);
count:=count+NumRead;
end
else
begin
BlockRead(FromF, Buffer, SizeOf(Buffer), NumRead);
BlockWrite(ToF, Buffer, NumRead, NumWritten);
count:=count+NumRead;
end;
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(ToF);
CloseFile(FromF);
end;
procedure TForm1.Button1Click(Sender
begin
FileSave;
end;
procedure TForm1.Button2Click(Sender
begin
FileLoad;
end;
end.