Paradoxのテーブルにあるメモ型項目に
AAA
BBB
CCC
と入っているものを
AnsiString の WKmem に
AAABBBCCC
と取り込みたいのですが、どのように記述すれば良いのでしょうか?
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)。
ご指導願えないでしょうか?