[Решено] Basic, путь к временному каталогу

Автор Massaraksh7, 1 мая 2024, 14:13

0 Пользователи и 1 гость просматривают эту тему.

Massaraksh7

Не могу найти.
Для python это ищется на раз:
import tempfile
...
s=tempfile.gettempdir()
А для Basic - что-то нет.

bigor

Это скорее всего нужно делать через чтение системных переменных для винды, на у линукса стандарт /tmp
Поддержать наш форум можно здесь

Massaraksh7

Спасибо. Тогда следующий логичный вопрос: как определить тип ОС?

bigor

Поддержать наш форум можно здесь

Massaraksh7


bigor

:)можно через те же системные переменные если %temp% не пустая, то содержит путь для виндовс, не задана, значит мы в линукс
Поддержать наш форум можно здесь

Massaraksh7


mikekaganski

У LibreOffice (и OpenOffice) своя настрйка временной папки. С т.з. макроса нет разницы, какая временная папка в системе - если пользователь настроил особую папку для ЛО, то её и надо использовать; а если не настроил - то по умолчанию и так будет системная папка (но в виде переменной "$(temp)", которую надо раскрыть).

sub ShowTempDir
  GlobalScope.BasicLibraries.LoadLibrary("Tools")
  oSubst = CreateUnoService("com.sun.star.util.PathSubstitution")
  regkey = GetRegistryKeyContent("/org.openoffice.Office.Paths/Paths/org.openoffice.Office.Paths:NamedPath['Temp']")
  MsgBox oSubst.getSubstituteVariableValue(regkey.WritePath)
end sub
С уважением,
Михаил Каганский

Massaraksh7

Цитата: mikekaganski от  1 мая 2024, 15:09и так будет системная папка (но в виде переменной "$(temp)", которую надо раскрыть).
Мне нужна именно системная папка, а не настроенная, хотя и настраивать её никто точно не будет. Спасибо, сейчас попробую.

Massaraksh7

Ага, проверил на Windows и на Linux. То, что надо, ещё раз спасибо.

mikekaganski

#10
Цитата: Massaraksh7 от  1 мая 2024, 15:26Мне нужна именно системная папка, а не настроенная

Тогда ещё проще - не спрашивайте настраиваемую, а напрямую раскройте переменную, обозначающую системную:

sub ShowTempDir
  oSubst = CreateUnoService("com.sun.star.util.PathSubstitution")
  MsgBox oSubst.getSubstituteVariableValue("$(temp)")
end sub

Сервис PathSubstitution
С уважением,
Михаил Каганский

Massaraksh7

Благодарю.
Ну, вот, как-то так получилось организовать канал связи Lazarus --> Файлы --> Basic --> LibreOffice Calc. Дальше уже рутинная работа.

Massaraksh7

Но, рано радовался. В файле текст в кодировке Utf8, на стороне basic читается через
Open FileName For Input As #1
Line Input #1,s
Close #1
Результат на картинке.

mikekaganski

С уважением,
Михаил Каганский

Massaraksh7

Да, спасибо, работает.