Главная страница
    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.01 c
1-63153
GooG-NTS
2004-01-06 04:44
2004.01.20
Быть с верху!


1-63069
Shooraniy
2004-01-08 19:31
2004.01.20
Create???


6-63270
Yakudza
2003-11-19 12:31
2004.01.20
Как оборвать соединение с инетом ?


1-63242
WondeRu
2004-01-09 10:30
2004.01.20
Unload Driver


1-63131
Lion
2004-01-07 21:23
2004.01.20
Dll и QuickRep





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский