lazarus + openoffice
Модератор: Модераторы
lazarus + openoffice
Помогите пожалуйста!
Хочу под win xp связать программу написанную под lazarus c openoffice.
Например есть шаблон под writer, как установить с наим связь и вписать необходимые данные.
Хочу под win xp связать программу написанную под lazarus c openoffice.
Например есть шаблон под writer, как установить с наим связь и вписать необходимые данные.
sant
Вот это посмотрите http://uno-pas-bridge.sourceforge.net/
Вот это посмотрите http://uno-pas-bridge.sourceforge.net/
Mr.Smart писал(а):sant
Вот это посмотрите http://uno-pas-bridge.sourceforge.net/
не совсем понятно! можно на пальцах объяснить ....
-установка связи,
-открытие
-запись в необходимое место,
-закрыть...
Там есть пример приложения.
Добавлено спустя 19 минут 48 секунд:
Посмотрите здесь
http://freepascal.ru/forum/viewtopic.php?f=24&t=2585
http://freepascal.ru/forum/viewtopic.php?f=5&t=2977
п.с. А вообще перед тем как задать вопрос поищите по форуму
Добавлено спустя 5 минут 20 секунд:
Вот ещё http://freepascal.ru/forum/viewtopic.php?f=24&t=4270 может чем поможет.
Добавлено спустя 19 минут 48 секунд:
Посмотрите здесь
http://freepascal.ru/forum/viewtopic.php?f=24&t=2585
http://freepascal.ru/forum/viewtopic.php?f=5&t=2977
п.с. А вообще перед тем как задать вопрос поищите по форуму
Добавлено спустя 5 минут 20 секунд:
Вот ещё http://freepascal.ru/forum/viewtopic.php?f=24&t=4270 может чем поможет.
Код: Выделить всё
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 10:19:49, всего редактировалось 1 раз.
sant
Для начала воспользуйтесь тегом [code]. И отформатируйте свой пост!
Для начала воспользуйтесь тегом [code]. И отформатируйте свой пост!
исправлено. Просьба помочь!
- 1 Приведите имя каталога в котором у вас лежит ваша программа (.exe);
- 2 Посмотрите значение, которое получилось в переменной sss после преобразований.
в том-то и дело если так (все работает):
ежели так (не работает):
Код: Выделить всё
Document := Desktop.LoadComponentFromURL('file:///c|/1.odt','_blank', 0, LoadParams);ежели так (не работает):
Код: Выделить всё
sss:='file:///c|/1.odt','_blank';
Document := Desktop.LoadComponentFromURL(sss,'_blank', 0, LoadParams);
- AbakAngelSoft
- постоялец
- Сообщения: 273
- Зарегистрирован: 06.08.2008 19:28:26
- Откуда: Краснодар
- Контактная информация:
Код: Выделить всё
sss:='file:///c|/1.odt','_blank';Вот так и не будет работать вы строке передаете две строки через запятую. компилятор разве не ругается?
ежели так (не работает):
Код: Выделить всё
sss:='file:///c|/1.odt';
Document := Desktop.LoadComponentFromURL(sss,'_blank', 0, LoadParams);sant
Появляется ли какая ошибка? Напишите текст ошибки если не трудно
Появляется ли какая ошибка? Напишите текст ошибки если не трудно
Код: Выделить всё
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
Это проблемы с преобразованием из типа String в Variant. Объявите переменную ssss как Variant.
Добавлено спустя 1 минуту 5 секунд:
И подключите модуль для работы с Вариантами variants.
Это проблемы с преобразованием из типа String в Variant. Объявите переменную ssss как Variant.
Добавлено спустя 1 минуту 5 секунд:
И подключите модуль для работы с Вариантами variants.
дело в том, что не создается Document := Desktop.LoadComponentFromURL(sss,'_blank', 0, LoadParams);
sss делал variant
sss - const, ничего не помогает,
а если явно написать Document := Desktop.LoadComponentFromURL('file:///c|/1.odt','_blank', 0, LoadParams);работает
sss делал variant
sss - const, ничего не помогает,
а если явно написать Document := Desktop.LoadComponentFromURL('file:///c|/1.odt','_blank', 0, LoadParams);работает
