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


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

AAA
BBB
CCC

と入っているものを

AnsiString の WKmem に

AAABBBCCC

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/05/21 10:15:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:quintia No.1

回答回数562ベストアンサー獲得回数71

ポイント60pt

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を使っていないならその指示に従って下さい。

id:j_kimi

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

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

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

さて、

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

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

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

再構築して実行すると

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

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

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

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

int WKsiz;

char *WKbuf;

TBlobStream *WKblb;

AnsiString WKmem;

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

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

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

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

2010/05/18 15:15:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません