V poslednom pokračovaní návodov o jazykovo lokalizovaných makrách si uvedieme zvyšné funkcie a procedúry pre makro, ktoré spočítava znaky v dokumente a vo vybranej textovej oblasti.
Naposledy sme si uviedli iba procedúru, pomocou ktorej sme jazykovo lokalizovali dialógové okno zo súborov a vypisovali spočítané slová, znaky a ich prepočet na normostrany a autorské hárky. Makro by však nebolo úplné bez ostatných funkcií a definícií premenných, ktoré preto dnes uvádzame.
dim medzery, medzery_regularne as string ' Oddeľovacie znaky medzi slovami
dim oddelovac_slov as string ' Znak, ktorý sa považuje za ukončovač slova
dim nepocitane_znaky as string ' Znaky, ktoré sa nikdy nepočítajú
dim normo_strana as single ' Počet znakov na normostranu
dim autorsky_harok as single ' Počet normostrán na jeden AH
dim Dokument, Hladaj, vyber as object
sub init_znaky
medzery=chr(&H20)+chr(&HA0)+chr(&H09) ' Space, Hard space, Tab
medzery_regularne="("+chr(&H20)+"|"+chr(&HA0)+"|"+chr(&H09)+")"
oddelovac_slov=medzery+chr(&H0A)+chr(&H0D) ' Medzery, CR, LF
oddelovac_slov=oddelovac_slov+"-"+"/"+"." ' Ak je potrebne pocitat napr. Firedk-Mistek za dve slova, potom aj pomlcka
' alebo lomitko a bodka napr. pre http odkazy
nepocitane_znaky=chr(&H0A)+chr(&H0D) ' CR, LF
normo_strana=1800 ' Počet znakov na normostranu
autorsky_harok=20 ' Počet normostrán na autorský hárok
Dokument=ThisComponent
Hladaj=Dokument.createSearchDescriptor()
vyber=dokument.getCurrentSelection() ' aktuálny vyber
end sub
REM Spočíta počet výskytov reťazca Co
function Spocitaj_hladanim(Co as string, Regularne, Cele_slova, Velke_pismena as Boolean) as long
dim nasiel as object
dim kolko as long
Hladaj.searchString=Co
Hladaj.SearchRegularExpression=Regularne
Hladaj.SearchWords=Cele_slova
Hladaj.SearchCaseSensitive=Velke_pismena
kolko=0
nasiel = Dokument.findFirst(Hladaj)
Do While NOT isNull(nasiel)
if len(nasiel.String)>0 then
kolko=kolko+1
end if
nasiel = Dokument.findNext( nasiel.End, Hladaj)
Loop
Spocitaj_hladanim=kolko
end function
function Jazyk_OOo as string
dim ConfigProvider, MasterKey as object
dim NodePath(0) as new com.sun.star.beans.PropertyValue
dim jazyk as string
NodePath(0).Name = "nodepath"
NodePath(0).Value = "org.openoffice.Setup/L10N/"
ConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")
MasterKey = ConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", NodePath())
Jazyk_OOo = MasterKey.getByName("ooLocale") '"sk", "cs", ...
end function
REM Prevod reálneho čísla na reťazec (2 desatinné miesta)
function single_2_string (cislo as single) as string
dim pom, cela, desatinna as string
dim kde as long
if cislo>0.10 then ' Pri menších číslach zaokrúhlime na 0, lebo funkcia str() potom dáva exponenciálny tvar E-02
pom=trim(str(cislo))
else
pom="0,00"
endif
kde=Instr(pom,",") ' Vyhľadáme desatinnú čiarku
if kde=0 then
kde=Instr(pom,".") ' Ak nie je desatinná čiarka, vyhľadáme desatinnú bodku
endif
cela="0"
desatinna="00"
if kde>0 then
cela=left(pom,kde-1) ' Vybranie celej časti, je desatinná čiarka
else
cela=pom ' Vybranie celej časti, nie je desatinná čiarka
endif
if kde>0 then ' Ak je desatinná čiarka, tak spracujeme desatinnú časť
kde=len(pom)-kde
if kde>0 then
desatinna=right(pom,kde) ' Vybranie desatinnej časti
endif
endif
kde=len(desatinna)
select case kde ' Nastavenie desatinnej časti na dve desatinné miesta
case 0
desatinna="00"
case 1
desatinna=desatinna+"0"
case else
desatinna=left(desatinna,2)
end select
single_2_string=cela+","+desatinna ' Výsledný reťazec (nastavujeme desatinnú čiarku)
end function
V Megafoto.sk len za 699 €
Copyright © 2002 - 2012 Inet.sk, s. r. o.Všetky práva vyhradenéNeprešlo jazykovou úpravouISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Webhosting Inet.sk