Главная страница
    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.46 MB
Время: 0.003 c
15-1297676970
***
2011-02-14 12:49
2011.06.05
Россия занимает 3-е место в мире по количеству выпускаемых книг


2-1298993690
Андрей_новичок
2011-03-01 18:34
2011.06.05
Получить путь и имя файла рисунка рабочего стола


2-1298584745
Артём
2011-02-25 00:59
2011.06.05
Деление строки


15-1298064597
Юрий
2011-02-19 00:29
2011.06.05
С днем рождения ! 19 февраля 2011 суббота


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский