Вниз
Скачать: CL | DM;

Откр. файлов Word и Excel. Раннее, позднее связывание или OLE   Найти похожие ветки 

← →
Dmitrich   (2005-09-14 16:53) [0]

Здравствуйте уважаемые мастера. Очень нужна ваша помощь. Ситуация такая: есть БД (InterBase), в которой хранятся полностью вордовские и экселевские файлы. При необходимости нужно эти документы открывать. Как это сделать без сохранения на HDD???
Частично это можно решить с помощью TOleContainer т.к. там есть загрузка из потока LoadFromStream, но мне нужно чтобы документ открывался не в моём приложении!

Спасите меня! Скоро сдавать заказчику. Заранее спасибо.


← →
Dmitrich   (2005-09-14 22:08) [1]

Никто не знает?


← →
dmitry501 ©   (2005-09-15 05:59) [2]

из контейнера скопируй в буфер обмена, а потом вставь  в чужое приложение.
p.s. А чем временные файлы не устраивают?


← →
Dmitrich   (2005-09-15 11:59) [3]

Клиент придирчивый! А как в контейнер загрузить Stream? Поток записываю нормально SaveToSream(stream), а при загрузке LoadFromStream(Strream) ругается. Я использовал и TFileStream и TMemoryStream, и просто TStream. Ничего не помогает


← →
dmitry501 ©   (2005-09-15 12:52) [4]

Подробнее можно? Как ругается? На что? Кусочек кода где ругается....
Клиент так и написал, что временных файлов быть не должно? Странно как-то.... Обычно на любой Windows есть %temp%, куда нужно и писать эти самые файлы. Кроме того, и Word и Excel сами делают временные файлы- заказчик возражать не будет? :)


← →
Dmitrich   (2005-09-15 20:42) [5]

Для Клиента эти файлы имеют большую важность и он не хотел бы чтобы их можно было просто скопировать так простые файлы (Хотя это можно сделать простым Сохранить как..., но я не спорю). Для этого и делается БД. Можно конечно использовать и временные файлы, но для этого одним не ободёшься. Лучше всё делать через поток. А дело вот в чём:

Имеется поток S. (Пробывал и TStream, и TFileStream, и TMemoryStream):

...
var
 S:TMemoryStream;
..
// имеем загруженый Ole
 Form1.OleContainer1.CreateObjectFromFile("c:\1.doc",false);

//  Зоздаём поток и кидаем туда документ из OLE, в дальнейшем он будет
//  сохранён в БД
 s:=TMemoryStream.Create;
 Form1.OleContainer1.SaveToStream(s);
 Form1.OleContainer1.DoVerb(ovShow);
..
// Здесь всё хорошо, а при загрузке начинается
// (S даже не сохраняясь в ДБ):
Form1.OleContainer2.LoadFromStream(s);

Ошибка:Stream read error

Я уже не знаю что делать!!!!!!!!!!!!!!!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
2-1164540980
doncova1
2006-11-26 14:36
2006.12.17
Как в DBGrid изменить высоту строк


15-1164695258
cyborg
2006-11-28 09:27
2006.12.17
Кто смотрел фильм Инопланетянин?


3-1160596997
БогданБ
2006-10-12 00:03
2006.12.17
Поиск по похожему номеру


15-1164550562
pumba
2006-11-26 17:16
2006.12.17
Прогу в вуз по базам данных


2-1164645290
Okey
2006-11-27 19:34
2006.12.17
String to PChar <>




   Наверх