16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"bmpのファイルにコメントをつける"
この発言に対し以下のコメントが寄せられています
#00450 凛 さん RE:bmpのファイルにコメントをつける
bmpファイルにコメントを付加してみるサンプルです。
もっと良い方法もがありそうですし、結構危険かも知れませんので
注意して使って下さい。
この方法でコメントをつけると、最後に付加されるので、
普通にbmpとして読むことができます。
しかし、間違ってコメントが無い状態で消去するととんでもないことになりま
すので、実用にするにはコメントがあるか無いかのフラグを最後に付加したり、
拡張子を変えたり、最後にIDブロックを設けるなどの対応が必要と思います。
画像ローダによっては、コメント付きのファイルを読み込ませて、上書き保存
させるとコメントは消えると思います。(単に読むだけならOK)
//コメントをつける
procedure TForm1.Button1Click(Sender: TObject);
var
f:file;
buf:pchar;
str:string;
len:integer;
begin
str:='例えばこんなコメントをつけてみる';
buf:=stralloc(length(str)+1);
strPCopy(buf,str);
len:=length(str);
assignfile(f,'c:\a.bmp');
reset(f,1);
try
seek(f,filesize(f));
blockwrite(f,buf^,len);
blockwrite(f,len,sizeOf(len));
finally
closefile(f);
strDispose(buf);
end;
end;
//コメントを消去
procedure TForm1.Button2Click(Sender: TObject);
var
f:file;
buf:pchar;
str:string;
len:integer;
begin
assignfile(f,'c:\a.bmp');
reset(f,1);
try
seek(f,filesize(f)-sizeOf(len));
blockread(f,len,sizeOf(len));
buf:=strAlloc(len+1);
seek(f,filesize(f)-sizeOf(len)-len);
blockread(f,buf^,len);
(buf+len)^:=#0;
str:=string(buf);
showmessage(str);
finally
closefile(f);
strDispose(buf);
end;
end;
//コメントを消去
procedure TForm1.Button3Click(Sender: TObject);
var
f:file;
len:integer;
begin
assignfile(f,'c:\a.bmp');
reset(f,1);
try
seek(f,filesize(f)-sizeOf(len));
blockread(f,len,sizeOf(len));
seek(f,filesize(f)-sizeOf(len)-len);
Truncate(f);
finally
closefile(f);
end;
end;
☆☆☆ わからないときサンプル蔵 わかったときサンプル蔵 ☆☆☆
98/03/13(金) 00:51 凛(MXB01744)
Original document by 凛 氏 ID:(MXB01744)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|