Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
ВнизОткрытие из BLOB Найти похожие ветки
← →
veb (2003-12-24 12:28) [0]Моя задача реализовать механизм, использующийся, ну например, в почтовых программах. Прикрепленный к письму файл, возможно либо сохранить, либо открыть приложением, которое его создало. Вопрос: Каким образом передается файл из БД в приложение? Если через временный файл, то как этот временный файл почистить, после закрытия моей программы или возможно сделать открытие файла еще каким-либо способом?
← →
Sandman25 (2003-12-24 12:35) [1]Каким образом передается файл из БД в приложение
DataSet.CreateBlobStream(TBlobField(DataSet.FieldByName("my_blob_field")), bmRead)
← →
Reindeer Moss Eater (2003-12-24 12:38) [2]Если через временный файл, то как этот временный файл почистить, после закрытия моей программы
DeleteFile(имя_файла)
или возможно сделать открытие файла еще каким-либо способом?
О каких файлах, в конце концов, идет речь?
От этого зависят "другие способы".
← →
Reindeer Moss Eater (2003-12-24 12:39) [3]Если через временный файл, то как этот временный файл почистить, после закрытия моей программы
После закрытия твоей программы удалить файл твоей программой не получится. Только руками.
← →
veb (2003-12-24 13:02) [4]Господа, извините, я оказывается совершенно не умею ставить вопросов, второй раз перефразирую, а получаю совершенно не те ответы. Поэтому в конце представлен код, который мне необходимо либо доработать либо переработать, может он подскажет смысл моих действий. А я еще раз попытаюсь объяснить: В BLOB поле сохранен Wordowский файл(или Excel). Моя задача открыть этот файл соответствующим приложением, причем временные файлы извлеченные из базы данных не должны множится на винте, как кролики. Их необходимо удалять. Как это сделать, если файл уже открыт Wordoм, а мое приложение, может быть уже закрыто. Но даже суть не в этом, как вообще правильно это делать, как работают OutLoook, The BAt и др?
procedure TfmdcMessage.acFileOpenExecute(Sender: TObject);
Var Fld : TField;
FileStream : TFileStream;
BlobStream : TStream;
FileName : String;
HWin : HWND;
begin
inherited;
FileName := путь к временным файлам + имя, которое считал из соседнего поля;
Fld := MyDataSet.FindField( "BLOB-поле");
BlobStream := MyDataSet.CreateBlobStream( Fld, bmRead);
try
FileStream := TFileStream.Create( FileName, fmCreate);
try
FileStream.CopyFrom( BlobStream, BlobStream.Size);
finally
FileStream.Free;
end;
finally
BlobStream.Free;
end;
ShellExecute( HWin, "open", nil,nil, SW_NORMAL);
end;
← →
Sandman25 (2003-12-24 13:07) [5][4] veb (24.12.03 13:02)
Насколько я знаю, именно временный файл они и создают. Но создают его во временной папке Windows, и при перезагрузке этот каталог очищается
← →
veb (2003-12-24 13:23) [6]to Sandman25
Действительно, the BAt создает временный файл в папке C:\windows\temp, только что проверил. Но как же он его вычищает, если я уже закрыл The BAt, а файл остался открытым в Worde?
← →
Sandman25 (2003-12-24 13:26) [7][6] veb (24.12.03 13:23)
Наверное, это делает Word - при закрытии проверяет, что файл находится во временной папке. И, возможно, есть еще какой-то флаг запуска Word - при выходе удалять файл, если он во "временной" папке
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.016 c