首页 > 解决方案 > 从数据集 blob 字段打开和编辑文件

问题描述

TIBDataset我在blob 字段中有文件。

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

我试图打开这样的文件:

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

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

有没有办法从 blob 字段打开文件,或者从关闭(外部)文件中获取回调?

标签: c++delphic++builder

解决方案


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

我在头文件中声明了 aTStringList *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!如果某些文件已打开,则删除不适用于这些文件。


推荐阅读