2016-05-11 8 views
3

Я родом из PHP/JS/AS3/... такого рода языки. Теперь я изучаю основные для Libreoffice, и я как бы пытаюсь найти, как получить нечто похожее, как ассоциативный массив, который я использую для использования с другими языками.Libreoffice basic - Ассоциативный массив

То, что я пытаюсь сделать, это иметь такую ​​структуру:

2016 г. => Октябрь => afilename.csv

2016 => Апрель => anotherfilename.csv

с год в качестве основного ключа, затем месяц и некоторые данные. Подробнее Я пытаюсь найти информацию и многое другое. Я смущаюсь, поэтому, если кто-то может рассказать мне немного о том, как организовать мои данные, я был бы так доволен.

Спасибо!

ответ

0

Я не знаком с LibreOffice (или OpenOffice.org) BASIC или VBA, но я ничего не нашел в документации для каких-либо ассоциативных массивов, хэш или что-то еще, что кто-то его называет.

Однако многие современные диалоги BASIC позволяют вам define your own type as a series of fields. Тогда это просто вопрос использования чего-то вроде

Dim SomeArray({count|range}) As New MyType 

Я думаю, что это будет как можно ближе, без использования внешних библиотек. Может быть, Python-UNO bridge поможет, поскольку у Python есть такая функция (словари), но я точно не знаю. Я также не знаю, как это повлияет на производительность. Вы можете предпочесть Java вместо Python для взаимодействия с UNO, и это тоже нормально: есть тип java.util.HashMap. Извините, я не могу больше помочь, но важно помнить, что любой код BASIC имеет тенденцию соответствовать значению слова «базовый» на английском языке без внешней помощи.

1

Как сказал @Chrono Kitsune, у Python и Java есть такие функции, но Basic нет. Вот Python-UNO пример для LibreOffice Writer:

def dict_example(): 
    files_by_year = { 
     2016 : {'October' : 'afilename.csv', 
       'November' : 'bfilename.csv'}, 
     2017 : {'April' : 'anotherfilename.csv'}, 
    } 
    doc = XSCRIPTCONTEXT.getDocument() 
    oVC = doc.getCurrentController().getViewCursor() 
    for year in files_by_year: 
     for month in files_by_year[year]: 
      filename = files_by_year[year][month] 
      oVC.getText().insertString(
       oVC, "%s %d: %s\n" % (month, year, filename), False) 

g_exportedScripts = dict_example, 

Создайте файл с указанным выше с помощью текстового редактора, например Блокнота или GEdit кода. Затем поместите его here.

Чтобы запустить его, откройте Writer и перейдите к Tools -> Macros -> Run Macro и найдите файл под My Macros.

 Смежные вопросы

  • Нет связанных вопросов^_^