Programovanie makier v LibreOffice: Opravená funkcia CurDir()

LO.png Ako dopadlo nahlásenie chyby pri funkcii CurDir(), spôsobujúca zlyhanie celého LibreOffice pri zadaní neexistujúcej jednotky? A čo funkcia ChDir(), je ešte nejaká možnosť opravy jej funkcionality?  

Opravená chyba pri funkcii CurDir()

V minulom článku sme sa venovali funkčnosťou dvoch funkcii. Jednou z nich bola funkcia CurDir(). Pri zadaní neexistujúcej jednotky spadlo celé LibreOffice. Pri testovaní funkcie CurDir() sme vtedy použili verziu LibreOffice 6.3.3.2. Skúsme overiť funkčnosť funkcie na aktuálnej verzii, ktorú máme k dispozícii, LibreOffice 6.4.1.2.

Nasleduje test, ak zadáme správne argument drive, čiže jednotka existuje.

Sub actualDir
MsgBox "Aktuálny adresár: " & CurDir("C")
End Sub

Zadali sme správne argument drive Zadali sme správne argument drive

A teraz to skúsme cielene pokaziť zadaním neexistujúcej jednotky.

Sub actualDir
MsgBox "Aktuálny adresár: " & CurDir("D")
End Sub

Pri neexistujúcej jednotke dostávame chybovú hlášku Pri neexistujúcej jednotke dostávame chybovú hlášku

Ak sme zadali neexistujúcu jednotku, konečne sme sa dočkali vytúženej chybovej hlášky miesto pádu celého LibreOffice. Som rád, že minulý článok pomohol opraviť túto chybu a hlavne sa chcem poďakovať používateľovi raal, ktorý tento problém nahlásil.

A čo funkcia ChDir()?

Takže funkciu CurDir() máme vybavenú. Ostáva sa vyjadriť k ChDir(). Ta nám vôbec nefungovala pri testovaní v minulom článku. Opäť sa musím poďakovať používateľovi raal za poslanie podnetu do Bugzilla. Podľa tamojších vyjadrení v zmienenej Bugzille je nepravdepodobné, že dôjde k nejakej oprave funkcie ChDir().

Takže nám zostáva nájsť nejakú náhradu za funkciu ChDir(). Každý, kto používa napr. operačný systém Linux Ubuntu, pozná príkaz cd. A o tom bola funkcia ChDir(), keď bola funkčná. Existuje nejaká náhrada za túto funkciu? Ako sa to vezme. Nejaké náznaky prostredníctvom komentára poskytol používateľ neutr v tomto článku. Nie je to úplná náhrada za funkciu ChDir(), ale poskytuje návod, ako napr. otvoriť súbor bez toho, aby ste museli meniť aktuálne zvolený priečinok. O tomto spôsobe si povieme niekedy z budúcich článkov.

Na záver – funkcia ChDrive()

Aby sme boli kompletný, spomenie ešte funkciu ChDrive(). Táto funkcia má zmeniť aktuálne zvolenú jednotku na inú jednotku, napr. pevný disk, USB alebo pamäťovú kartu. Nasledujúci kód by mal zmeniť aktuálne vybranú jednotku za jednotku externého pevného disku.

Sub actualDir
MsgBox "Aktuálny adresár: " & CurDir()
ChDrive("D")
MsgBox "Aktuálny adresár: " & CurDir()
End Sub

Aktuálne nastavený priečinok Aktuálne nastavený priečinok

Aktuálny adresár po využití funkcie ChDrive() Aktuálny adresár po využití funkcie ChDrive()

Neprekvapivo zisťujeme, že po využití funkcie ChDrive() sa nič nestalo. Takže aj táto funkcia je nefunkčná tak, ako ChDir().

(Jako ve škole) Průměr: 1.00 | Hodnotilo: 5
 

Komentáře

user avatar Petr Valach
Odpovědět
Programovanie makier v LibreOffice: Opravená funkcia CurDir()
24. 03. 2020, 00:15:57
Zmíněný uživatel raal je Zdeněk Crhonek, kolega z nadace The Document Foundation, klíčová postava v české lokalizaci a QA managementu LibreOffice.

Odpovědět

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz