Главная страница
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.059 c
15-1164646508
Гарри Поттер
2006-11-27 19:55
2006.12.17
Как побезопасней сеть настроить?


10-1126883726
TStas
2005-09-16 19:15
2006.12.17
Как ответить экселю "не сохранять"?


2-1164719388
Sergey_b
2006-11-28 16:09
2006.12.17
Трей


1-1162441631
Tex
2006-11-02 07:27
2006.12.17
Подсвечивание заголовков в PageCotrol


15-1163883139
Rouse_
2006-11-18 23:52
2006.12.17
Как же я обожаю цены порядка 9999 и т.п.