Získanie separátoru v absolútnej ceste
Systémová cesta resp. presnejšie absolútna cesta k súboru v Linuxe a Windowse sa líši rozdielnosťou
separátorov, ktoré oddeľujú adresáre. Zatiaľ čo vo Windowse je separátor vyjadrený znakom
\
, v Linuxe je to /
. Ak by ste mali program, ktorý chcete využiť
na Linuxe aj vo Windowse, tak musíte vždy prehadzovať separátory. Avšak nezúfajte, tomuto nevďačnému úkonu sa
môžeme vyhnúť použitím funkcie getPathSeparator()
. V nasledujúcej ukážke implementuje funkciu
getPathSeparator()
vo Windowse.
Dim path As String
path = "C:" & getPathSeparator() & "Používatelia" & getPathSeparator() & "astronom" &
getPathSeparator() & "Pracovná plocha" & getPathSeparator() & "file.cpp"
MsgBox path
End Sub
Ak chceme ten istý program nasadiť na Linux, tak systémovú resp. absolútnu cestu k súboru mierne
upravíme, okrem separátoru. Vďaka funkcii getPathSeparator()
nemusíme
prepisovať separátor a ak máte obzvlášť dlhé absolútne cesty
alebo ich máte v programe nadefinovaných veľmi veľa, tak vám
to ušetrí drahocenný programátorsky čas. Teraz
nasleduje ukážka programu v Linuxe.
Sub getPathLinux
Dim path As String
path = getPathSeparator() & "home" & getPathSeparator() & "astronomer" & getPathSeparator()
& "Plocha" & getPathSeparator() & "file.cpp"
MsgBox path
End Sub
Skúsme teraz program rozšíriť o konvertovanie absolútnej cesty do URL cesty a späť.
Sub getPathWindowsURL
Dim path, url_adresa As String
path = "C:" & getPathSeparator() & "Používatelia" & getPathSeparator() & "astronom" &
getPathSeparator() & "Pracovná plocha" & getPathSeparator() & "file.cpp"
url_path = ConvertToURL(path)
path2 = ConvertFromURL(url_path)
MsgBox "Absolútna cesta: " & path & Chr(10) & "URL cesta: " & url_path & Chr(10) &
"Absolútna cesta po prevode z URL cesty: " & path2
End Sub
Zistiť aktuálny adresár
Potrebujete zistiť aktuálny adresár, v ktorom pracuje vaše makro? Na tento účel poznáme funkciu CurDir(), ktorá zistí aktuálny adresár.
Sub currentDir
Dim currentPath As String
path = CurDir()
MsgBox "Aktuálny adresár: " & path
End Sub
Tvorba nových adresárov
Ak chceme vytvoriť nový adresár, využijeme funkciu MkDir()
. Táto funkcia má argument path
,
v ktorom definujete absolútnu cestu. Základnú implementáciu funkcie MkDir()
si ukážeme
v nasledujúcom programe.
Dim path As String
path = "C:\Users\astro\Desktop\makra"
MkDir(path)
End Sub
Po spustení programu sa nám vytvoril adresár nazvaný ako makra
. Je umiestnený na pracovnej ploche
vo Windows. Pri definovaní absolútnej cesty nezabudnite pridať na konci cesty názov adresáru, ktorý chcete
vytvoriť. Preto končí moja nadefinovaná absolútna cesta názvom budúceho priečinku makra
. Obdobne to
funguje v Linuxe, len pozor na separátory.
Za argument funkcie môžeme použiť okrem absolútnej cesty aj URL adresu. Skúsme dať v ďalšom makre argument ako URL adresu, ktorú získame prevodom absolútnej cesty na URL adresu.
Sub createDir
Dim path As String
path = "C:\Users\astro\Desktop\makra"
url_path = ConvertToURL(path)
MkDir(url_path)
End Sub
Mazanie adresárov
Ak vieme vytvoriť adresár, tak zákonite by sme mali byť schopný ho aj vymazať. Na zmazanie adresára slúži
funkcia RmDir()
. Rovnako ako MkDir()
,
má jeden argument, ktorým definujeme absolútnu cestu k adresáru. Nasledujúca ukážka zhrňuje všetko,
čo sme si doteraz ukázal aj s implementáciou funkcie RmDir()
.
Sub deleteDir
Dim path As String
path = "C:\Users\astro\Desktop\makra"
url_path = ConvertToURL(path)
MkDir(url_path)
RmDir(url_path)
End Sub
Námet na tento článok poslúžili tieto zdroje:
OpenOffice.org Macros Explained Third Edition, Andrew Pitonyak, page 168-169, dostupné online
Funkce CurDir, help.libreoffice.org, dostupné online
Funkce MkDir, help.libreoffice.org, dostupné online
Funkce RmDir, help.libreoffice.org, dostupné online