Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.06.05;
Скачать: [xml.tar.bz2];

Вниз

Word.Application - загрузка из потока   Найти похожие ветки 

 
bss   (2011-02-16 17:26) [0]

Имеем дело с COM/OLE-объектом "Word.Application" и его документами.

Есть ли способ загрузить файл из памяти, а не с диска? Не OLE-информацию всю, а допустим имеем из базы Stream с данными в формате файла .doc

Также интересует сохранение.


 
Игорь Шевченко ©   (2011-02-16 18:39) [1]

сохранить во временный файл, загрузить из файла


 
bss   (2011-02-16 18:54) [2]

Фиг, мы легких путей не ищем )))

Вот мое творчество.

Допустим, OleDocument - Это документ Word"а (или Workbook эксела):

procedure TfrmRG_DocOut.SaveDocumentToStream(Stream: TStream);
var
 TempStorage: IStorage;
 PersistStorage: IPersistStorage;
 TempLockBytes: ILockBytes;
 DataHandle: HGlobal;
 Buffer: Pointer;
begin
 (IDispatch(OleDocument) as IOleObject).QueryInterface(IPersistStorage, PersistStorage);
 if PersistStorage <> nil then
 begin
   OleCheck(CreateILockBytesOnHGlobal(0, True, TempLockBytes));
   OleCheck(StgCreateDocfileOnILockBytes(TempLockBytes, STGM_READWRITE
     or STGM_SHARE_EXCLUSIVE or STGM_CREATE, 0, TempStorage));
   OleCheck(OleSave(PersistStorage, TempStorage, False));
   PersistStorage.SaveCompleted(nil);

   OleCheck(GetHGlobalFromILockBytes(TempLockBytes, DataHandle));

   Buffer := GlobalLock(DataHandle);
   try
     Stream.Size := GlobalSize(DataHandle) ;
     Stream.Position := 0;
     Stream.WriteBuffer(Buffer^, Stream.Size);
   finally
     GlobalUnlock(DataHandle);
   end;
 end;
end;


 
Игорь Шевченко ©   (2011-02-16 20:33) [3]


> Вот мое творчество.


Как бы вас всех, творцов, собрать в одно место... :)


 
Leonid Troyanovsky ©   (2011-02-16 22:42) [4]


> Игорь Шевченко ©   (16.02.11 20:33) [3]

> Как бы вас всех, творцов, собрать в одно место... :)

В дом творчества.
Скажем, Верзоль.

--
Regards, LVT.


 
Игорь Шевченко ©   (2011-02-16 23:10) [5]


> Скажем, Верзоль.


оценил :)


 
bss   (2011-02-17 11:16) [6]

Игорь, хотите сказать, что код не очень хороший? В целом, принципы взяты из кодов VCL, так шо без наездов плиз ))


 
Inovet ©   (2011-02-17 11:22) [7]

> [4] Leonid Troyanovsky ©   (16.02.11 22:42)
> В дом творчества.
> Скажем, Верзоль.

Путин вчера пердложил владивостокским таможенникам заняться творчеством в ДК Таможенник, а не на рабочем месте клипы снимать о своей рулезной крутизне.


 
Anatoly Podgoretsky ©   (2011-02-17 11:33) [8]


> Игорь, хотите сказать, что код не очень хороший? В целом,
>  принципы взяты из кодов VCL, так шо без наездов плиз ))

Ссылка на чужой код не состоятельна, откуда бы этот код не был взят.



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

Форум: "Прочее";
Текущий архив: 2011.06.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.003 c
15-1297676970
***
2011-02-14 12:49
2011.06.05
Россия занимает 3-е место в мире по количеству выпускаемых книг


2-1298927662
Sashka
2011-03-01 00:14
2011.06.05
Работа с AsyncCall


2-1295467098
Тимоха111
2011-01-19 22:58
2011.06.05
Задержка sleep


15-1298011878
Virgo_Style
2011-02-18 09:51
2011.06.05
Помнится, когда-то здесь поднималась тема китайских магазинов


2-1299047111
filimonic
2011-03-02 09:25
2011.06.05
Re





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский