Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-62988
loki128
2003-12-23 13:50
2004.01.20
Внутреннее соединение таблиц


14-63316
Кен
2003-12-28 06:32
2004.01.20
Как искать закономерности ?


3-62986
Rafe
2003-12-23 13:11
2004.01.20
Что-то непонятное стало происходить с параметрами...


1-63130
Юрий Ж.
2004-01-07 22:31
2004.01.20
Вопрос с прозрачностью...


14-63346
Stas
2003-12-30 09:06
2004.01.20
C НОВЫМ ГОДОМ !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский