The following code when using ADO Connection is right, but Using Unidac is wrong.
Code: Select all
Save Image:
dtmdlCDIPS->untblTempl->Active = true;
dtmdlCDIPS->untblTempl->Append();
dtmdlCDIPS->untblTempl->FieldByName("TEMPLNAME")->AsString = rzcbb1->Text;
dtmdlCDIPS->untblTempl->FieldByName("TEMPLNO")->AsString = rzedt1->Text;
dtmdlCDIPS->untblTempl->FieldByName("ADDDATE")->AsDateTime = Date();
dtmdlCDIPS->untblTempl->FieldByName("TEMPLTOP")->AsInteger = TemplTop;
dtmdlCDIPS->untblTempl->FieldByName("TEMPLLEFT")->AsInteger = TemplLeft;
dtmdlCDIPS->untblTempl->FieldByName("TEMPLHEIGHT")->AsInteger = TemplHeight;
dtmdlCDIPS->untblTempl->FieldByName("TEMPLWIDTH")->AsInteger = TemplWidth;
//生成Memo对象
TMemoryStream *MS1, *MS2;
MS1 = new TMemoryStream;
MS2 = new TMemoryStream;
//将轮廓图加入
GetJpegStream(imgen2->IEBitmap->VclBitmap,MS1);
//将数组加入
for (int i = 0; i Write(&TemplData[i][j], sizeof(float));
}
}
MS2->Position = 0;
int size1 = MS1->Size;
TBlobField *dstBlob;
dstBlob = (TBlobField*)dtmdlCDIPS->untblTempl->FieldByName("TEMPLIMAGE");
dstBlob->LoadFromStream(MS1);
((TBlobField *)dtmdlCDIPS->untblTempl->FieldByName("TEMPLSOURCE"))->LoadFromStream(MS2);
dtmdlCDIPS->untblTempl->Post();
dtmdlCDIPS->untblTempl->Active = false;
MS2->Free();
MS1->Free();
Read Code:
AnsiString QueryStr;
QueryStr += "SELECT TEMPLIMAGE FROM TEMPLDB WHERE TEMPLNAME = ";
QueryStr += QuotedStr(Trim(rzdbedt1->Text)) + " AND TEMPLNO = ";
QueryStr += QuotedStr(Trim(rzdbedt2->Text));
dtmdlCDIPS->unqrytempl->Close();
dtmdlCDIPS->unqrytempl->SQL->Clear();
dtmdlCDIPS->unqrytempl->SQL->Add(QueryStr);
dtmdlCDIPS->unqrytempl->Open();
if (dtmdlCDIPS->unqrytempl->RecordCount > 0) {
TMemoryStream *MS1;
MS1 = new TMemoryStream;
((TBlobField *)dtmdlCDIPS->unqrytempl->FieldByName("TEMPLIMAGE"))->SaveToStream(MS1);
MS1->Position = 0;
int size2 = MS1->Size;
MS1->SaveToFile("C:\1.jpg");
TJPEGImage *MyJPEG;
MyJPEG = new TJPEGImage;
MyJPEG->PixelFormat = pf8bit;
MyJPEG->LoadFromStream(MS1);
imgenvwTempl->Bitmap->Assign(MyJPEG);
imgenvwTempl->Update();
MS1->Free();
MyJPEG->Free();
}
Attention: for the same image, size1 does not equal to size2, why?