Programovanie makier v LibreOffice: Formátovanie čísel (1) – funkcie CInt a CLng

Vývoj Formátovanie čísel bolo vždy vedou. Pri využívaní rôznych funkcii často premýšľame, aké tvary argumentov (napr. čísel) ešte funkcia dokáže spracovať a ktoré nie. V tomto článku sa zameriame bližšie na funkcie CInt a CLng.   

Format desiatkových a hexadecimálnych čísel pre funkciu CInt

Skúsme sa pozrieť na rôzne argumenty, ktorými môžeme nakŕmiť funkciu CInt. Pre zopakovanie, CInt vracia celé čísla. V prvom príklade sa pozrieme na rôzne tvary desiatkových čísel, ktoré môžeme použiť vo funkcii CInt.

1. príklad: Formát desiatkových čísel pre funkciu CInt

Sub macro   

On Error Resume Next

Dim i As Integer
Dim retazec As String
Dim pole()

pole() = Array(10, 5.4, 14.55, "36", "p38", "545lop", "565.48jok", -468, -25.44, "-p454", "-15ldl", "-151.15421", "-155.144pklp", 30000000, -455555555, "54515554",  "-25621446452")

For i = LBound(pole()) To UBound(pole())
        retazec = retazec & i+1 & " CInt(" & pole(i) & ") = "
        retazec = retazec & CInt(pole(i))
        retazec = retazec & Chr(10)
Next 

Msgbox retazec

End Sub

Výsledok makra Výsledok makra

Rozbor makra: Vytvorili sme program, kde testujeme viacero možností. A nielen tie správne. Z toho dôvodu sme pridali do makra On Error Resume Next, aby nám samotný program nespadol. Miesto toho v bodoch si ukážeme najkritickejšie chyby a postrehy.

4 CInt(36) = 36 – to že je číslo zabalené do reťazca, nie je problém

5 CInt(p38) = 0 – p nie je celé číslo

14 CInt(30000000) = – a máme problém, keďže celé číslo má rozsah od –32 768 do 32 767, došlo k pretečeniu

V 15, 16 a 17 nastáva rovnaká situácia ako pri 14.

Fajn, desiatkové čísla máme za sebou, skúsme si zaexperimentovať s hexadecimálnymi číslami. Poďme nato.

2. príklad: Formát hexadecimálnych čísel pre funkciu CInt

Sub macro 

On Error Resume Next

Dim i As Integer
Dim retazec As String
Dim pole()

pole() = Array(&HA, &H1A, &H3B, &HDE, &H1112, &H5EFD, &HA8A2)

For i = LBound(pole()) To UBound(pole())
        retazec = retazec & i+1 & " CInt(" & pole(i) & ") = "
        retazec = retazec & CInt(pole(i))
        retazec = retazec & Chr(10)
Next 

Msgbox retazec

End Sub

Výsledok programu Výsledok programu

Rozbor programu:

Na definovanie hexadecimálneho čísla použijeme formulu &H. Po tejto formule nasleduje samotný hexadecimálny zápis konkrétneho čísla.

7 CInt(43170) = – opäť nastáva pretečenie

Format desiatkových a hexadecimálnych čísel pre funkciu CLng

Funkcia CLng oproti CInt sa vyznačuje tým, že vracia celé dlhé čísla. Rozsah celých dlhých čísel je od  –2 147 483 648 až 2 147 483 647, čo nám dáva viac možností ako obyčajné celé číslo. Pozrime si príklad a možností, ktoré nám celé dlhé číslo poskytuje.

3. príklad: Formát desiatkových čísel pre funkciu CLng

Sub macro 

On Error Resume Next

Dim i As Integer
Dim retazec As String
Dim pole()

pole() = Array(25, 11.7, 17.45, "4578", "kh488", "458polh", "455.458sac", -4982, -154.447, "-vdsd5545", "-787878vvv", "-454.4486", "-787.125vdpdp", 2545878, -7854625, "56548978", "-89852354", "785654526", "-456245978", "4568745891", "-8787878787")

For i = LBound(pole()) To UBound(pole())
        retazec = retazec & i+1 & " CLng(" & pole(i) & ") = "
        retazec = retazec & CLng(pole(i))
        retazec = retazec & Chr(10)
Next 

Msgbox retazec

End Sub

Výsledok programu Výsledok programu

Rozbor makra:

20 CLng(4568745891) = – mimo rozsah celého dlhého čísla

21 CLng(-8787878787) = – mimo rozsah celého dlhého čísla

Neminú nás ani hexadecimálne čísla pre funkciu CLng.

4. program: Formát hexadecimálnych čísel pre funkciu CLng

Sub macro   

On Error Resume Next

Dim i As Integer
Dim retazec As String
Dim pole()

pole() = Array(&HB, &HC3, &H3A8, &H7F1D, &HB4EDF, &H5AB9F4, &HAAACCC7)

For i = LBound(pole()) To UBound(pole())
        retazec = retazec & i+1 & " CLng(" & pole(i) & ") = "
        retazec = retazec & CLng(pole(i))
        retazec = retazec & Chr(10)
Next 

Msgbox retazec

End Sub

Výsledok programu Výsledok programu

(Jako ve škole) Průměr: 1,00 | Hodnotilo: 2
 

Přidat názor

 

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.

 
AEC Kariéra Volné pozice
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.

 

Public Relations

Chtějte to, na co se můžete spolehnout

Přemýšlíte nad tím, co byste měli udělat pro to, aby na Vaše stránky zavítalo více návštěvníků? Tak to se můžete spolehnout na jedno velice efektivní řešení.

Pokračování ...


Tiskárna Brno (CCB)
 
 
woo jaw demo hz