水平有限,欢迎交流.
unit ReadFile;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,jpeg;
type
TRecJpeg = record
JpegSize: Integer;
JpegHandle: Integer;
JpegFileName: string;
JpegFileStream: TMemoryStream;
JpegFile: TJPEGImage;
end;
TForm2 = class(TForm)
Button1: TButton;
Image1: TImage;
btnShow: TButton;
procedure FormCreate(Sender: TObject);
procedure btnShowClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
Buffer,Buffer2: PChar;
iHandle,iSize: Integer;
msFile :TMemoryStream;
RecJpeg_1,RecJpeg_2: TRecJpeg;
iJpegAllSize:Integer;
JpegBuffer: PChar;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
// iHandle := FileOpen('c:/pic/2.txt',fmOpenRead);
(* iHandle := FileOpen('c:/pic/1.jpg',fmOpenRead);
if(iHandle >=0)then
begin
iSize := FileSeek(iHandle,0,2);
Buffer := PChar(AllocMem(iSize+1));
FileClose(iHandle);
end;
// iHandle := FileOpen('c:/pic/2.txt',fmOpenRead);
iHandle := FileOpen('c:/pic/1.jpg',fmOpenRead);
if(iHandle >=0)then
begin
FileRead(iHandle,Buffer^,iSize);
OutputDebugString(Buffer);
FileClose(iHandle);
end;
msFile := TMemoryStream.Create;
msFile.Write(buffer^,iSize);
msFile.Position := 0;
// msFile.Free;
// FreeAndNil(Buffer); *)
RecJpeg_1.JpegHandle := FileOpen(RecJpeg_1.JpegFileName,fmOpenRead);
RecJpeg_1.JpegSize := FileSeek(RecJpeg_1.JpegHandle,0,2);
FileClose(RecJpeg_1.JpegHandle);
RecJpeg_2.JpegHandle := FileOpen(Recjpeg_2.JpegFileName,fmOpenRead);
RecJpeg_2.JpegSize := FileSeek(RecJpeg_2.JpegHandle,0,2);
FileClose(RecJpeg_2.JpegHandle);
iJpegAllSize := RecJpeg_1.JpegSize + Recjpeg_2.JpegSize;
OutputDebugString(PChar(Format('文件大小:%d',[iJpegAllSize])));
JpegBuffer := PChar(AllocMem(iJpegAllSize+1));
RecJpeg_1.JpegHandle := FileOpen(RecJpeg_1.JpegFileName,fmOpenRead);
FileRead(RecJpeg_1.JpegHandle,JpegBuffer^,RecJpeg_1.JpegSize);
OutputDebugString(JpegBuffer);
RecJpeg_1.JpegFileStream := TMemoryStream.Create;
RecJpeg_1.JpegFileStream.Write(JpegBuffer^,RecJpeg_1.JpegSize);
RecJpeg_1.JpegFileStream.Position := 0;
Inc(JpegBuffer,Recjpeg_1.JpegSize);
FileClose(RecJpeg_1.JpegHandle);
RecJpeg_2.JpegHandle := FileOpen(RecJpeg_2.JpegFileName,fmOpenRead);
FileRead(RecJpeg_2.JpegHandle,JpegBuffer^,RecJpeg_2.JpegSize);
RecJpeg_2.JpegFileStream := TMemoryStream.Create;
RecJpeg_2.JpegFileStream.Write(JpegBuffer^,RecJpeg_2.JpegSize);
RecJpeg_2.JpegFileStream.Position := 0;
Inc(JpegBuffer,RecJpeg_2.JpegSize);
FileClose(RecJpeg_2.JpegHandle);
Dec(JpegBuffer,iJpegAllSize);
OutputDebugString(JpegBuffer);
end;
procedure TForm2.btnShowClick(Sender: TObject);
//var
// jpgFile: TJPEGImage;
begin
// jpgfile := TJPEGImage.Create;
// jpgFile.LoadFromStream(msFile);
// image1.Picture.Assign(jpgFile);
RecJpeg_2.JpegFile := TJPEGImage.Create;
RecJpeg_2.JpegFile.LoadFromStream(RecJpeg_2.JpegFileStream);
image1.Picture.Assign(RecJpeg_2.JpegFile);
(* Buffer2 := PChar(AllocMem(msfile.Size+1));
msFile.Read(Buffer2^,msFile.Size);
OutputDebugString(Buffer2); *)
// image1.Picture.LoadFromFile('C:/pic/1.jpg');
// msFile.Free;
// jpgFile.Free;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
RecJpeg_1.JpegFileName := 'c:/pic/1.jpg';
Recjpeg_2.JpegFileName := 'c:/pic/2.jpg';
// RecJpeg_1.JpegFileName := 'c:/pic/1.txt';
// RecJpeg_2.JpegFileName := 'c:/pic/2.txt';
end;
end.