Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.05;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
2-1298280359
>|<
2011-02-21 12:25
2011.06.05
как проверить, что файл открыт


1-1256587984
fuzzy
2009-10-26 23:13
2011.06.05
Не срабатывают breakpoints при отладке ActiveXForm


10-1175455973
nali
2007-04-01 23:32
2011.06.05
Удаляются закладки после замены текста


15-1297923580
И. Павел
2011-02-17 09:19
2011.06.05
k-means/c-means перед обучением нейронной сети


15-1297805399
Юрий
2011-02-16 00:29
2011.06.05
С днем рождения ! 16 февраля 2011 среда