人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Borland C++ Builder で Paradoxのメモ型項目内容を取得するには?

Paradoxのテーブルにあるメモ型項目に

AAA
BBB
CCC

と入っているものを

AnsiString の WKmem に

AAABBBCCC

と取り込みたいのですが、どのように記述すれば良いのでしょうか?

●質問者: j_kimi
●カテゴリ:コンピュータ
✍キーワード:aaa AnsiString Borland Builder C++
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● quintia
●60ポイント ベストアンサー

BDEを使っていると仮定して……(Paradoxを扱うならBDEの方が手っ取り早いみたいなので)、

http://codeback.net/exception-class-einvalidcast-with-message-in... に、

Let us see an example attached by c++builder to show how to read the data from a memo field into a blob stream and display it in a memo control.

とあって、memo型フィールドからblob streamへデータを取り出してメモコントロールに表示するソースの例があります。


 Stream = new TBlobStream((TBlobField *)Query1->FieldByName("Notes"), bmRead);

Query1からフィールド名Notesを取り出しています。

フォームにQuery1の名前で貼り付けられていると仮定しているのでしょう。この名前と、フィールド名を変更してください。


あとは、

Memo1->SetTextBuf(Buffer); // Display the buffer's contents.

の部分を変えて、

WKmem = Buffer;

とでもすればいいんじゃないでしょうか。

(WKmem って変数名ですよね? 勘違いだったらすみません)


ここで示した記事の本旨は「TBlobStream はBDE用のものだから、ADOとかを使っているとうまくいかないよ。TADOBlobStream や TClientBlobStream に適宜置き換えてね」ということです。

BDEを使っていないならその指示に従って下さい。

◎質問者からの返答

ご回答ありがとうございます。

当方初の質問で勝手が良くわからず、

質問に必要な情報が足りない状態ですみません。

さて、

>BDEを使っていると仮定して

はParadox標準のDBを使用しているのでその通りだと思います。

リンク先のサンプルを見ながらご指摘の部分を修正して実行したのですが

再構築して実行すると

「項目(フィールド)は BLOB ではありません.」

WKblb = new TBlobStream((TBlobField *)Table1->FieldByName("メモ"), bmRead);

の部分で止まってしまいます。

変数の定義はサンプルを参照して

int WKsiz;

char *WKbuf;

TBlobStream *WKblb;

AnsiString WKmem;

と設定しているのですが…。

ParadoxのDBであるTable1の"メモ"もメモ型項目で間違いないのですが、

さっぱりわからない状態です(T_T)。

ご指導願えないでしょうか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ