Komentáře Programovanie makier v LibreOffice: Textové reťazce (2)

user avatar neutr
Odpovědět
Programovanie makier v LibreOffice: Textové reťazce (2)
3. 08. 2016, 09:49:33
Velmi pěkné - děkujeme.
Přes to bych malou poznámku měl. Bylo by vhodné popisované funkce přiblížit uživateli tak, že se porovnají s funkcemi sešitu.

Mnoho lidí totiž nejprve zvládne funkce sešitu a nakonec je zájem donutí k práci s makry. Pro tento typ lidí je vhodné právě například vytvořit relaci mezi InStr a FIND(), respektive SEARCH(). Relace by měla obsahovat i syntaktické odlišnosti. Takže uživatel by měl být připraven na odlišné postupy v Basicu od maximálně zjednodušených postupů u funkcí Calcu.

Někdy je nezbytností portovat do Basicu funkce sešitu, protože se dají naprogramovat jen velice obtížně, nebo vůbec. Takže zde by měl mít uřivatel možnost zjistit, že například FIND() lze přímo nahradit pomocí InStr() - synaxe s nulou a podobně.

Jako další bonus, respektive námět bych měl popis funkcí Calcu které není možné v Basicu zadat. Ačkoliv to vypadá divně, tak například pro funkci sešitu CHAR() a CODE() není ekvivalent. Jsou zabudovány jen fukce ASC - což je ekvivalent k funkci sešitu UNICODE() a podobně CHR() k funkci UNICHAR(). Takové funkce je potřebné portovat - tím myslím volat z Basicu jako rutinu.
Existuje ještě nouzový postup přes načtení do listu. Vložíme do listu kamkoliv vzorec sešitu, načteme výsledek do proměnné a buňku se vzorcem smažeme.

Ukázka portovaných funkcí CHAR() a CODE()
'----------------------------------------------------------------
Function CHAR_(X As single) as string
dim args(0) as single
args(0) = X
scalc = createUnoService( "com.sun.star.sheet.FunctionAccess")
CHAR_ = scalc.CallFunction( "CHAR", args )
End Function
'----------------------------------------------------------------
Function Code_(S As string) as integer
dim args(0) as string
args(0) = S
scalc = createUnoService( "com.sun.star.sheet.FunctionAccess")
Code_ = scalc.CallFunction( "CODE", args )
End Function
'----------------------------------------------------------------
 
 
woo jaw demo hz