lazarus + openoffice

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

lazarus + openoffice

Сообщение sant » 23.11.2009 21:58:28

Помогите пожалуйста!
Хочу под win xp связать программу написанную под lazarus c openoffice.
Например есть шаблон под writer, как установить с наим связь и вписать необходимые данные.
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение Mr.Smart » 23.11.2009 22:05:03

sant
Вот это посмотрите http://uno-pas-bridge.sourceforge.net/
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: lazarus + openoffice

Сообщение sant » 23.11.2009 22:22:20

Mr.Smart писал(а):sant
Вот это посмотрите http://uno-pas-bridge.sourceforge.net/

не совсем понятно! можно на пальцах объяснить ....

-установка связи,
-открытие
-запись в необходимое место,
-закрыть...
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение Mr.Smart » 23.11.2009 22:30:59

Там есть пример приложения.

Добавлено спустя 19 минут 48 секунд:
Посмотрите здесь
http://freepascal.ru/forum/viewtopic.php?f=24&t=2585
http://freepascal.ru/forum/viewtopic.php?f=5&t=2977

п.с. А вообще перед тем как задать вопрос поищите по форуму :wink:

Добавлено спустя 5 минут 20 секунд:
Вот ещё http://freepascal.ru/forum/viewtopic.php?f=24&t=4270 может чем поможет.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: lazarus + openoffice

Сообщение sant » 18.12.2009 10:57:47

Код: Выделить всё
try
    Server := CreateOleObject(ServerName);
  except
    ShowMessage('Не установлен OpenOffice');
    Exit;
  end;
  Desktop := Server.CreateInstance('com.sun.star.frame.Desktop');
  LoadParams := VarArrayCreate([0, -1], varVariant);

   {Open document}
  sss:='';
  sss:=ExtractFilePath(ParamStrUTF8(0));
  sss:= StringReplace(sss, ':', '|', [rfReplaceAll, rfIgnoreCase]);
  sss:= StringReplace(sss, '\', '/', [rfReplaceAll, rfIgnoreCase]);
  sss:='file:///'+sss+'anketa.odt';
  //sss:='file:///c|/1.odt';
  try
    Document := Desktop.LoadComponentFromURL('file:///c|/1.odt','_blank', 0, LoadParams);
  except
  begin
    ShowMessage('Ошибка файла!'+#13#10+sss);
    Exit;
  end;
  end;
  //Document := Desktop.LoadComponentFromURL(sss,'_blank', 0, LoadParams);

  TextCursor := Document.Text.CreateTextCursor;

   {Insert existing document}  //Substitute your path and doc
  BookmarksSupplier:=Document.getBookmarks;
  Bookmark:=BookmarksSupplier.getByName('a1').getAnchor;
  instext:=Utf8ToAnsi(работает);
  Bookmark.setString(instext);

Server:= Unassigned;


Не получается через переменную sss: string передать строку, в которой записан петь к файлу.
Работает: Document := Desktop.LoadComponentFromURL('file:///c|/1.odt','_blank', 0, LoadParams);
Не работает: Document := Desktop.LoadComponentFromURL(sss,'_blank', 0, LoadParams);
Система - xp + lazarus 0.9.28 + openoffice 3.1.0

Что делаю не так?
Последний раз редактировалось sant 18.12.2009 11:19:49, всего редактировалось 1 раз.
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение Mr.Smart » 18.12.2009 11:10:03

sant
Для начала воспользуйтесь тегом [code]. И отформатируйте свой пост!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: lazarus + openoffice

Сообщение sant » 18.12.2009 11:20:38

исправлено. Просьба помочь!
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение Mr.Smart » 18.12.2009 11:30:46

  • 1 Приведите имя каталога в котором у вас лежит ваша программа (.exe);
  • 2 Посмотрите значение, которое получилось в переменной sss после преобразований.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: lazarus + openoffice

Сообщение sant » 18.12.2009 11:40:01

в том-то и дело если так (все работает):
Код: Выделить всё
Document := Desktop.LoadComponentFromURL('file:///c|/1.odt','_blank', 0, LoadParams);


ежели так (не работает):
Код: Выделить всё
sss:='file:///c|/1.odt','_blank';
Document := Desktop.LoadComponentFromURL(sss,'_blank', 0, LoadParams);
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение AbakAngelSoft » 18.12.2009 11:50:59

Код: Выделить всё
sss:='file:///c|/1.odt','_blank';

Вот так и не будет работать вы строке передаете две строки через запятую. компилятор разве не ругается?
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Re: lazarus + openoffice

Сообщение sant » 18.12.2009 11:56:27

ежели так (не работает):

Код: Выделить всё
    sss:='file:///c|/1.odt';
    Document := Desktop.LoadComponentFromURL(sss,'_blank', 0, LoadParams);
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение Mr.Smart » 18.12.2009 12:43:30

sant
Появляется ли какая ошибка? Напишите текст ошибки если не трудно :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: lazarus + openoffice

Сообщение sant » 18.12.2009 13:03:32

Код: Выделить всё
Project project.exe raised exeption class 'EOleExeption' with message:
InterfaceOleWrapper_Impl::Invoke :
[automation bridge]UnoConversionUtilities<T>::createOleObjectWrapper
The Variant does not contain an object type!

Отладчик выдает данное исключение.

Предпологаю что-то не так с кодировкой, такое может быть?
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение Mr.Smart » 18.12.2009 13:08:39

sant
Это проблемы с преобразованием из типа String в Variant. Объявите переменную ssss как Variant.

Добавлено спустя 1 минуту 5 секунд:
И подключите модуль для работы с Вариантами variants.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: lazarus + openoffice

Сообщение sant » 18.12.2009 13:34:25

дело в том, что не создается Document := Desktop.LoadComponentFromURL(sss,'_blank', 0, LoadParams);
sss делал variant
sss - const, ничего не помогает,
а если явно написать Document := Desktop.LoadComponentFromURL('file:///c|/1.odt','_blank', 0, LoadParams);работает
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

Рейтинг@Mail.ru