喫茶XRAYトップページ

[スレッド全体
]

[10531] Blobフィールドへの格納方法への質問返信 削除
2016/11/19 (土) 16:56:00 Mr.XRAY
[Blobフィールドへの格納方法への質問]
http://www.freeml.com/delphi-users/4577/latest

コードを見る限りエラーが発生するような要因はないようなんですが.
昨日今日の方ではないので
「エラーの内容を書いた方がいいのではないでしようか ?」
とは言いにくいですね.

かなり昔,コードのインデントがない方がいい,という内容をどこかのサイト
で読んだ記憶がありますが,
Delphi を使っている方で本当にいるとは思いませんでした.
私自身は読みにくいと思っていますけど.
えっ ?  違う ? 何が (笑)


[10533] Re:Blobフィールドへの格納方法への質問返信 削除
2016/11/19 (土) 17:32:29 igy
▼ Mr.XRAYさん
> [Blobフィールドへの格納方法への質問]
> http://www.freeml.com/delphi-users/4577/latest
>
> コードを見る限りエラーが発生するような要因はないようなんですが.


あのコードで、シングルクォーテーションが2つ並んでいるのは、気になりますね。


[10536] Re2:Blobフィールドへの格納方法への質問返信 削除
2016/11/19 (土) 17:38:25 SO
▼ igyさん
 
> あのコードで、シングルクォーテーションが2つ並んでいるのは、気になりますね。

バックコーテーションの間違いですかね?

create table hogehoge
(
`レコード番号` int,
`レコード区分` char(2),
`受付番号` char(8)
)

[10537] Re3:Blobフィールドへの格納方法への質問返信 削除
2016/11/19 (土) 17:45:37 Mr.XRAY
▼ SOさん

> バックコーテーションの間違いですかね?

だとすると,というより,
実際データを SELECT して TDBGrid 等に表示できるか確認する必要が...
そんなことやっているでしょうね.
いや,もしかしたら... ハハハッ

どうして POST できないのか興味あるんですが,
例によって,怖くてレスできません !!
やっぱりここはエスパーの登場を期待することにします.


[10538] Re4:Blobフィールドへの格納方法への質問返信 削除
2016/11/19 (土) 18:00:52 SO
▼ Mr.XRAYさん

Delphi手元にないので、私も妄想で書いてますが、
「function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; virtual;」
って、ポインタを返すわけではないですよね?
BlobStream.Free;
ADODataSet1.Post;
Postする前に解放してるけど???

[10554] Re5:Blobフィールドへの格納方法への質問返信 削除
2016/11/22 (火) 08:33:37 おかぽん
▼ SOさん
> BlobStream.Free;
> ADODataSet1.Post;
> Postする前に解放してるけど???


元ネタがどこなのかはわからないのですが・・・
//TBlobStreamは必ずTable.Editよりも後でCreateしなければならず、
//Table.Postの前までにFreeしなければならない。
以下からの転載
Q: データベーステーブルのGraphicフィールドにビットマップを保存するには どのようにすれば良いのでしょうか?
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/faq/00107.htm

Mr.XRAY さんの記事もそのようになっていますし。
560_画像や RichEdit ワード文書をデータベースで読書き
http://mrxray.on.coocan.jp/Delphi/plSamples/560_RichEditDB.htm#03

CopyFrom じゃなく SaveToStream を使うのがミソだったりして。。。

[10556] Re6:Blobフィールドへの格納方法への質問返信 削除
2016/11/22 (火) 13:09:01 SO
▼ おかぽんさん
> ▼ SOさん
> > BlobStream.Free;
> > ADODataSet1.Post;
> > Postする前に解放してるけど???


私と同じボケをしている人がw

>
> 元ネタがどこなのかはわからないのですが・・・
> //TBlobStreamは必ずTable.Editよりも後でCreateしなければならず、
> //Table.Postの前までにFreeしなければならない。


ぃやぁ、CreateBlobStreamが戻り値がクラスポインタと妄想してみたら、
データ使う前に解放してるし...と思った。
オペレーターがコピーしてくれてるのかな?

 
> Mr.XRAY さんの記事もそのようになっていますし。
> 560_画像や RichEdit ワード文書をデータベースで読書き
> http://mrxray.on.coocan.jp/Delphi/plSamples/560_RichEditDB.htm#03


(^_^;)適当すぎてすみません。

きちんと元スレをみると、ポインタ宣言してないし...

[10558] Re7:Blobフィールドへの格納方法への質問返信 削除
2016/11/22 (火) 18:33:08 おかぽん
▼ SOさん
> > 元ネタがどこなのかはわからないのですが・・・
> > //TBlobStreamは必ずTable.Editよりも後でCreateしなければならず、
> > //Table.Postの前までにFreeしなければならない。

実はこれ、結構最近知ったんですよ。

BDE+oracleで長い間開発してきましたが、AnyDAC(現FireDAC)に乗り換えたときに、
ある1箇所で、同じようにTBlobStreamエラーが出るようになりました。
原因がわからなくて、他にTBlobStreamを使っているところと見比べると
TBlobStream.Freeの順番がpostの後にありました。
post前に移動すると、見事に動作しましたが、理由は不明のまま「動けばいいや」で。
そして、最近、なんとなくQAを読んでいて発見したという。

BDEだとpost後でも大丈夫だったんですが、こういう仕様はHelpにしっかり
記載してほしいと思う、今日この頃。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82