Можно ли хранить поток в не типизированном файле? Почему такой способ не проходит?
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Memo1: TMemo; Memo2: TMemo; btnWrite: TButton; btnRead: TButton; procedure btnReadClick(Sender: TObject); procedure btnWriteClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnReadClick(Sender: TObject); var numMemo1,numMemo2,sizeMemo1,sizeMemo2:word; NoTypeFile:file; ms:TMemoryStream; begin ms:=TMemoryStream.Create; AssignFile(NoTypeFile,'1.dat'); Reset(NoTypeFile,1);
BlockRead(NoTypeFile,numMemo1,2); Seek(NoTypeFile,2); BlockRead(NoTypeFile,sizeMemo1,2);
ShowMessage(IntToStr(sizeMemo1));
Seek(NoTypeFile,numMemo1);
ms.SetSize(sizeMemo1); ms.Position:=0; BlockRead(NoTypeFile,ms,sizeMemo1);
ms.Position:=0; Memo1.Lines.LoadFromStream(ms);
end;
procedure TForm1.btnWriteClick(Sender: TObject); var numMemo1,numMemo2,sizeMemo1,sizeMemo2:word; NoTypeFile:file; ms:TMemoryStream; begin ms:=TMemoryStream.Create; AssignFile(NoTypeFile,'1.dat'); Rewrite(NoTypeFile,1);
numMemo1:=8; Memo1.Lines.SaveToStream(ms); sizeMemo1:=ms.Size;
BlockWrite(NoTypeFile,numMemo1,2); Seek(NoTypeFile,2); BlockWrite(NoTypeFile,sizeMemo1,2); Seek(NoTypeFile,numMemo1); ms.Position:=0;
BlockWrite(NoTypeFile,ms,sizeMemo1);
ms.Clear; Memo2.Lines.SaveToStream(ms); sizeMemo2:=ms.Size; ms.Position:=0;
numMemo2:=numMemo1+sizeMemo1;
Seek(NoTypeFile,4); BlockWrite(NoTypeFile,numMemo2,2);
Seek(NoTypeFile,6); BlockWrite(NoTypeFile,numMemo2,2);
ms.Position:=0; Seek(NoTypeFile,numMemo2); BlockWrite(NoTypeFile,ms,sizeMemo2); ms.Clear;
CloseFile(NoTypeFile);
end;
end.
|
|