2010-02-09 18 views
1

我使用Borland的C++ Builder的5.我工作的數據庫應用程序 和現在導致我嚴重傷痛的C++程序員...在C++中使用圖像和數據與BLOB字段生成器

我「M使用一個Paradox 7.0表與C++ Builder和我根本無法找到一種方法來將數據插入的BLOB。 我也無法使用TDBImage VCL組件保存或查看圖片。我最近挫敗的嘗試嘗試着用 將圖像保存到BLOB字段中,使用的東西似乎是一塊鐵板一塊的代碼。

//----------------------------------------- 
Table1->Edit(); 
Open->Execute(); 
String file=Open->FileName; 
ShowMessage(file); 

TBlobField *blob; blob=new (TBlobField); 

blob->FieldName="Image"; 
blob->LoadFromFile(file); 

Table1->Post(); 
//----------------------------------------- 

在編譯此代碼失敗,選址的BlobField不具有動態對象分配功能什麼的。

我也無法在其自己的BLOB字段添加OCX位指示,一個OLE2組件也不保存。

請,任何人,來到我的幫助

:'(

+0

能否請您發佈確切的錯誤信息,這將真正幫助。 – 2010-02-09 17:22:50

+0

它可能是時間來更新。即使你可以在版本6上使用,你也會變得更好。 – 2010-02-09 17:52:57

回答

1

有一兩件事讓我吃驚,是你行:

TBlobField *blob; blob=new (TBlobField); 

首先,我不知道爲什麼您將使用該語法代替:

TBlobField *blob = new TBlobField; 

其次,TBlobField構造函數帶一個參數,一個指向一個TComponent,其作爲所有者爲對象,並負責事後清除存儲器的對象。有一兩件事你可以嘗試是要做到這一點:

TBlobField *blob = new TBlobField(Table1); 

我必須承認,雖然我還沒有在C++ Builder中做太多數據庫編程,但是,上面應該工作。

編輯:雖然還有一件事,你用TBlobField的方式不會與表關聯。您可能會發現這篇文章從about.com野趣:Storing Record Data in a BLOB Field [1]。這是寫在Delphi中,但應該很容易移植到C++,由於VCL框架。

你可以嘗試使用,而不是下面的,它不是,雖然測試,所以你可能會遇到這樣一些問題,如果是的話請告訴我:

TField *field = Table1->FieldByName("image"); 
TBlobField *blob = dynamic_cast<TBlobField *>(field); 
if (blob) 
{ 
    blob->LoadFromFile(file); 
} 

[1] http://delphi.about.com/od/database/a/record2blob.htm