从数据集Blob字段中打开和编辑文件

时间:2019-06-12 12:12:40

标签: c++ delphi c++builder

我在TIBDataset blob字段中有文件。

我需要能够打开它们并保存对它们所做的所有编辑。

我试图打开这样的文件:

String sFileName = "Test.txt";
((TBlobField*)(TDataset->FieldByName("FILE"))->SaveToFile(sFileName);
ShellExecute(0, L"open", sFileName.c_str(), L"", L"", SW_SHOWNORMAL);

但是我无法可靠地删除制作的文件或保存所有编辑。

是否可以通过blob字段打开文件,或者通过关闭(外部)文件获得回调?

1 个答案:

答案 0 :(得分:0)

我碰巧找到了解决自己问题的解决方案(不是完美的解决方案)。

我在头文件中声明了TStringList *slOpendFiles,并将所有保存的文件名添加到其中。

((TBlobField*)(TDataset->FieldByName("FILE"))->SaveToFile(sFileName);
slOpendFiles->Add(sFileName);`

在析构函数中,我尝试保存和删除文件:

int iMaxFile = slOpendFiles->Count;
int iCurrFile = 0;
while (iCurrFile < iMaxFile){
    TDataset->Edit();
    ((TBlobField*)(TDataset->FieldByName("FILE")))->LoadFromFile(slOpendFiles->Strings[iCurrFile]);
    TDataset->Post();
    DeleteFile(slOpendFiles->Strings[iCurrFile]);
    iCurrFile++;
}

NP!如果某些文件已打开,则删除将不起作用。