Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.17;
Скачать: 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 вся ветка

Текущий архив: 2006.12.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
3-1160476003
alucard
2006-10-10 14:26
2006.12.17
Подскажите как выловить добавление записи в базу


2-1164547988
Мишок
2006-11-26 16:33
2006.12.17
ярлыки


15-1164254365
Slider007
2006-11-23 06:59
2006.12.17
С днем рождения ! 23 ноября


2-1164730238
HaJik
2006-11-28 19:10
2006.12.17
Цвет SpeedButton


3-1160402974
YuRock
2006-10-09 18:09
2006.12.17
Отмена долгого запроса