16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:メモリマップトファイル(ストリーム)"
この発言は #00020 ぜえた さんのメモリマップトファイル(ストリーム) に対するコメントです
TFileMappingMemoryStream の使用例
'C:\Test.txt' と Memo1 の行数を数えます。
TFileMappingMemoryStream と TMemoryStream の違いにも注意。
---------------------------------------------------------------------------
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
const
FileName = 'C:\Test.txt';
function LineCount(S: PChar): Integer;
begin
Result := 1;
while S^ <> #0 do begin
if S^ = #13 then Inc(Result);
Inc(S);
end;
end;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TMemoryStream;
begin
Stream := TFileMappingMemoryStream.Create(FileName, fmOpenRead);
try
Label1.Caption := IntToStr(LineCount(PChar(Stream.Memory)));
finally
Stream.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Stream: TMemoryStream;
begin
Stream := TMemoryStream.Create;
try
Stream.LoadFromFile(FileName);
Label1.Caption := IntToStr(LineCount(PChar(Stream.Memory)));
finally
Stream.Free;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Label1.Caption := IntToStr(LineCount(PChar(Memo1.Lines.Text)));
end;
---------------------------------------------------------------------------
ぜえた (QZC05100)
Original document by ぜえた 氏 ID:(QZC05100)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|