открывать и редактировать файлы из поля BLOB набора данных - PullRequest
0 голосов
/ 12 июня 2019

У меня есть файлы в поле TIBDataset blob.

Мне нужно иметь возможность открыть их и сохранить все внесенные в них изменения.

Я пытался открыть такие файлы:

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

Но я не могу надежно удалить созданный файл или сохранить все изменения.

Есть ли способ открыть файл из поля большого двоичного объекта или получить обратный вызов при закрытии (внешнего) файла?

1 Ответ

0 голосов
/ 13 июня 2019

Я нашел решение (не идеальное) для моей собственной проблемы.

Я объявил 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!Удаление не работает с некоторыми файлами, если они открыты.

...