Komentáře Programovanie makier v LibreOffice: Tvorba a mazanie adresárov

user avatar neutr
Odpovědět
Programovanie makier v LibreOffice: Tvorba a mazanie adresárov
24. 07. 2019, 16:09:43
Jenom malá připomínka. V nápovědě je uvedeno pro :
CurDir a ChDir "Tento příkaz momentálně nefunguje podle dokumentace. Více informací najdete v popisu této chyby."


V minulosti byly podobné poznámky i u jiných příkazů s "NěcoDir". Nicméně ChDir (Change Directory) se asi tak často nepoužívá na rozdíl od CurDir (Curent Directory). Nevím jestli poznámky v nápovědě nejsou jen anachronizmem, ale osobně se tohoto příkazu obávám. Bojím se, že i když dnes chodí - tak se znovu může dostat do nestandardního chování.

Je možné, že jde o Operační Systém, ale já to obcházím cyklem už proto, že to co platí v LO nemusí platit v AOO. Provádím celkem často operace s adresáři a základem je cyklus který od konce iteruje výraz získaný z proměnné :

Dim sVar, sVal, Sep, MyUrl, MyName As String
sVar = ConvertFromUrl(ThisComponent.Url), nebo podle potřeby
sVar = ConvertFromUrl(oDoc.Url)
For i = Len(sVar) To 1 Step - 1
IF Mid(sVar,i,1) = "/" OR Mid(sVar,i,1) = "\" Then
sep = Mid(sVar,i,1)
sVal = Left(sVar,i)
Exit For
End If
Next i


Následně použiji například konstrukci vnořeného adresáře "MyFolder" :
MyUrl = ConvertToUrl(sVal & MyFolder & sep & MyName & ".ods(.odt)")


Vytvořený dokument ukládám na MyUrl. Obešel jsem tak nejen CurDir, ale také MkDir. Vím že to funguje na každém systému. Při podobných operacích (vytvoření nového dokumentu který se ukládá do složky, nebo i bez složky vedle zdrojového dokumentu) se bez podobného cyklu neobejdeme. Potom nás případná chyba "příkazu" nezajímá.


Podobně obcházím i případy kdy testuji obsah složky - na to se hodí výborně CurDir - a le z principu nechci riskovat chybu pokud by příkaz začal zase zlobit. Místo RmDir (Remove Directory) používám Kill ale jen proto, že mažeme většinou jen určitý soubor. RmDir smaže adresář ale v minulosti i tam byly problémy - nesměl být například otevřený některý soubor z mazaného adresáře. To snad platí stále ale také z principu mažu jen jmenované soubory. Chyba nechtěného smazání je při použití RmDir veliká a celkem fatální.
 
 
woo jaw demo hz