Главная страница
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.031 c
1-1162460119
NeyroSpace
2006-11-02 12:35
2006.12.17
Как узнать что компьютер простаивает n минут?


2-1164974851
_Gemini_
2006-12-01 15:07
2006.12.17
Динамическое создание ComboBox


3-1160046075
Shade__
2006-10-05 15:01
2006.12.17
Коннект к MySQL через прокси


2-1164797502
Riply
2006-11-29 13:51
2006.12.17
Сортировка массива с сохранением "перестановок"


2-1164857659
Marat
2006-11-30 06:34
2006.12.17
Запрос