Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Замена текста в OpenOffice [D6, XP]


_Guest_ ©   (2007-11-29 15:24:00) 

При замене текста  в OpenOffice получаю ошибку: InterfaceOleWrapper_Impl::doInvoke

Литературу почитал, примеры посмотрел, макрос создал, в чем дело понять не могу. Вот код, неудобоваримый из-за того что убрал все промежуточные процедуры, что бы было понятно чего откуда, проверки тоже убрал пока.

procedure TFormEMBasis.oo2Click(Sender: TObject);
var
 StarOffice, StarDesktop, Document, ooFrame, Struct, dispatcher : Variant;
 VariantArr, VariantArr1 : variant;
begin

 StarOffice := CreateOleObject( 'com.sun.star.ServiceManager' );
 StarDesktop := StarOffice.createInstance('com.sun.star.frame.Desktop');
 Document := StarDesktop.LoadComponentFromURL(
   'private:factory/swriter' , '_blank' , 0,
   VarArrayCreate([0, -1], varVariant));
 ooFrame := Document.getCurrentController.getFrame;
 Dispatcher := StarOffice.CreateInstance('com.sun.star.frame.DispatchHelper');

 VariantArr1 := VarArrayCreate([0, 0], varVariant);
 Struct := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 Struct.Name := 'Text';
 Struct.Value := '!!';
 VariantArr1[0] := Struct;
 dispatcher.executeDispatch(ooFrame, '.uno:InsertText', '', 0, VariantArr1);

 VariantArr := VarArrayCreate([0, 18], varVariant);
 VariantArr[0] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[0].Name := 'SearchItem.StyleFamily';
 VariantArr[0].Value := 2;
 VariantArr[1] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[1].Name := 'SearchItem.CellType';
 VariantArr[1].Value := 0;
 VariantArr[2] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[2].Name := 'SearchItem.RowDirection';
 VariantArr[2].Value := true;
 VariantArr[3] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[3].Name := 'SearchItem.AllTables';
 VariantArr[3].Value := false;
 VariantArr[4] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[4].Name := 'SearchItem.Backward';
 VariantArr[4].Value := false;
 VariantArr[5] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[5].Name := 'SearchItem.Pattern';
 VariantArr[5].Value := false;
 VariantArr[6] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[6].Name := 'SearchItem.Content';
 VariantArr[6].Value := false;
 VariantArr[7] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[7].Name := 'SearchItem.AsianOptions';
 VariantArr[7].Value := false;
 VariantArr[8] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[8].Name := 'SearchItem.AlgorithmType';
 VariantArr[8].Value := 0;
 VariantArr[9] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[9].Name := 'SearchItem.SearchFlags';
 VariantArr[9].Value := 65536;
 VariantArr[10] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[10].Name := 'SearchItem.SearchString';
 VariantArr[10].Value := '!!';
 VariantArr[11] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[11].Name := 'SearchItem.ReplaceString';
 VariantArr[11].Value := '22';
 VariantArr[12] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[12].Name := 'SearchItem.Locale';
 VariantArr[12].Value := 255;
 VariantArr[13] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[13].Name := 'SearchItem.ChangedChars';
 VariantArr[13].Value := 2;
 VariantArr[14] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[14].Name := 'SearchItem.DeletedChars';
 VariantArr[14].Value := 2;
 VariantArr[15] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[15].Name := 'SearchItem.InsertedChars';
 VariantArr[15].Value := 2;
 VariantArr[16] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[16].Name := 'SearchItem.TransliterateFlags';
 VariantArr[16].Value := 1024;
 VariantArr[17] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[17].Name := 'SearchItem.Command';
 VariantArr[17].Value := 0;
 VariantArr[18] := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 VariantArr[18].Name := 'Quiet';
 VariantArr[18].Value := true;

 dispatcher.executeDispatch(ooFrame, '.uno:ExecuteSearch', '', 0, VariantArr);

 StarOffice := Unassigned;
end;


Ошибка возникает при выполнении dispatcher.executeDispatch(ooFrame, '.uno:ExecuteSearch', '', 0, VariantArr);

Документ с "!!" создается.
Кто может, помогите пожалуйста.

Да и еще: VariantArr[0].value если смотреть отладчиком возвращает Unknown type: 17
То же для VariantArr[1], VariantArr[8], VariantArr[13]-VariantArr[15], VariantArr[17]


sniknik   (2007-11-29 15:59:00) [1]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1196340811&n=0
спам


Наверх

Титульная страница Поиск, карта сайта Написать письмо