Форум: "Corba";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
ВнизОткр. файлов 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 вся ветка
Форум: "Corba";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c