Delphi Tips
>> Index
● 01/12 ファイルを作らずメモリ上で動作する TTable コンポーネント
● 08/26 書式付きメモ型項目へアクセスしたい
最終更新: 6522 日前
0129 D1 D2 D3 D4 D5 D6 D7 3.1 95 98 作成: 1999/02/08 osamu rev 1.4 B1 B3 B4 B5 B6 B7 NT3 NT4 2K XP 更新: 2007/01/12 RAN 編集
ファイルを作らずメモリ上で動作する TTable コンポーネント
>前どこかで TTable 互換でメモリ上で動作するコンポーネントを見かけたのです
>が、ご存知な方いらっしゃいませんか? (その時にダウンロードしておけばよかっ
>た...)
[1]
Delphi Super Pageに昔からあるコンポーネントです。
BDEのインメモリテーブルと一時テーブルの機能を使ったものです。
http://sunsite.icm.edu.pl/delphi/
(2007年現在はhttp://delphi.icm.edu.pl/authors/a0000561.htm に移動)
ファイル名:inmemory.zip および inmem32.zip
※サンプル付きです。
Delphi1.0用のほうを、Delphi3で使用するときの修正点は以下のとおりです。32ビット版が出ているのでもう必要無いのかな?
#Inmemユニット:
# TypeMapで配列の最後に「, fldCURSOR」を追加。
# SubTypeMapで配列の最後に「, 0」を追加。
#TempTblユニット:
# TypeMapで配列の最後に「, fldCURSOR」を追加。
# SubTypeMapで配列の最後に「, 0」を追加。
※Register手続きがありませんので、追加してください。
>これがあればテンポラリのテーブルをいちいちディスクに作成しなくても済んで
>しまうため(結果的に作られるとしても)、便利なのですが...
そうなんですが、デバッグのとき、値を確認しにくいと思いますよ。
[2]
> ひょっとして http://delphideli.com/dlnbde.htm にある TMemTable のことでしょうか。
僕が前見たのは確かシェアウエアだったのですが、これはフリーでしかもソース付き。嬉しい限りです。
[3]
最近のDelphi では標準でMyBase が利用できます。
http://hp.vector.co.jp/authors/VA028375/delphi/db.html が分かりやすいです。
参照: [Delphi-ML:22981] [Delphi-ML:22983] <データベース> <コンポーネント >
0217 D1 D2 D3 D4 D5 D6 D7 3.1 95 98 作成: 1999/08/26 西坂良幸 rev 1.2 B1 B3 B4 B5 B6 B7 NT3 NT4 2K XP 更新: 1999/08/26 西坂良幸 編集
書式付きメモ型項目へアクセスしたい
ヘルプなどでは、Streamをつかった方法が紹介されています。
DataSet.FieldByName('Field1').AsString := RichEdit1.Text;
や
DataSet.FieldByName('Field1').AsVariant := RichEdit1.Text;
では、PlainText となり、書式が保存されません。
Field1 書式付きメモ型とし、
DataSetは開かれているとします。
// リッチエディットからフィールドへの書き込み
procedure TForm1.Button8Click(Sender: TObject);
var
Stream1 : TMemoryStream;
begin
Stream1 := TMemoryStream.Create;
try
RichEdit1.Lines.SavetoStream(Stream1);
Query1.Edit;
TBlobField(Query1.FieldByName('Field1')).LoadFromStream(Stream1);
Query1.Post;
finally
Stream1.Free;
end;
end;
// フィールドからリッチエヂットへの読み出し
procedure TForm1.Button4Click(Sender: TObject);
var
Stream1 : TBlobStream;
begin
Stream1 := TBlobStream.Create(TBlobField(Query1.FieldByName('Field1')), bmRead);
try
RichEdit1.Lines.LoadFromStream(Stream1);
finally
Stream1.Free;
end;
end;
TRichEdit系は、いくつかのバグが報告されています。
データが大きくなるとヤバイという噂です。
D4では、大部改善されたようですが、気をつけて下さい。
バグ情報は
http://www.dataweb.nl/~r.p.sterkenburg/indexpag.htm
参照: [Delphi-ML:5484] [Delphi-ML:41858] <データベース> <コンポーネント >
[新規作成] [最新の情報に更新]
How To
Lounge
KeyWords
Osamu Takeuchi osamu@big.or.jp
Tips
Delphi
Home