Lisafunktsioonid programmeerimisel LibreOffice Calcis

Hoiatav ikoon

JĂ€rgmistes lĂ”ikudes kirjeldatud Calci lisafunktsioonide abil laiendamise meetod on aegunud. Liidesed on kĂŒll endiselt sobivad ja toetatud, et tagada ĂŒhilduvus olemasolevate lisafunktsioonidega, kuid uute lisafunktsioonide programmeerimiseks tuleks kasutada uusi API-funktsioone.


LibreOffice Calci saab laiendada lisafunktsioonidega: need vÀlised programmeerimismoodulid pakuvad arvutustabelitega töötamiseks lisavÔimalusi. Lisafunktsioonid on Àra toodud FunktsiooninÔustaja kategoorias Lisafunktsioonid. Kui soovid lisafunktsioone ise programmeerida, saad siit teada, millised funktsioonid tuleb eksportida kaudu, et lisafunktsioonid saaks edukalt lisada.

LibreOffice otsib konfiguratsioonis mÀÀratud lisafunktsioonide kaustast sobivat . Selleks, et LibreOffice selle Àra tunneks, peavad olema teatud omadused, mida on kirjeldatud alljÀrgnevalt. Selle teabe abil saad LibreOffice Calci FunktsiooninÔustaja jaoks ise lisafunktsioone programmeerida.

Lisafunktsioonide kontseptsioon

Iga lisafunktsioonide teek hÔlmab mitut funktsiooni. MÔnda funktsiooni kasutatakse administratiivsel otstarbel. Oma funktsioonide jaoks vÔid valida peaaegu mis tahes nime. Siiski peavad nimed jÀrgima teatud reegleid, mis on seotud parameetrite edastamisega. TÀpsed nimepaneku- ja kÀivitustavad on erinevate platvormide jaoks erinevad.

funktsioonid

Kindlasti peavad olemas olema haldusfunktsioonid GetFunctionCount ja GetFunctionData. Nende abil saab mÀÀratleda nii funktsioonid kui ka parameetrite tĂŒĂŒbid ja tagastatavad vÀÀrtused. Tagastatavate vÀÀrtustena on toetatud tĂŒĂŒbid Pikad reaalarvud ja String. Parameetritena on lisaks toetatud ka pikkade reaalarvude massiivi, stringide massiivi ja lahtrite massiivi lahtrialad.

Parameetrid edastatakse viidete abil. Nende vÀÀrtuste muutmine on seetÔttu sisuliselt vÔimalik. Siiski pole see LibreOffice Calcis toetatud, kuna see pole arvutustabelites mÔttekas.

Teegid saab kĂ€itusajal uuesti laadida ja haldusfunktsioonid saavad nende sisu analĂŒĂŒsida. Iga funktsiooni jaoks on saadaval teave parameetrite arvu ja tĂŒĂŒbi, sisemiste ja vĂ€liste funktsiooninimede ning administratiivnumbri kohta.

Funktsioonid kutsutakse sĂŒnkroonselt ja tulemused tagastatakse kohe. VĂ”imalikud on ka reaalajas töötavad funktsioonid (asĂŒnkroonsed funktsioonid), mida pole siinkohal aga nende keerukuse tĂ”ttu ĂŒksikasjalikult selgitatud.

Üldine teave kasutajaliidese kohta

LibreOffice Calci lisatud lisafunktsiooni parameetrite suurim lubatud arv on 16: ĂŒks tagastatav vÀÀrtus ja kuni 15 funktsiooni sisendparameetrit.

AndmetĂŒĂŒbid on mÀÀratud jĂ€rgnevalt:

AndmetĂŒĂŒp

Definitsioon

CALLTYPE

Windows'is: FAR PASCAL (_far _pascal)

Mujal: vaikimisi (operatsioonisĂŒsteemis mÀÀratud vaikevÀÀrtus)

USHORT

2-baidine mÀrgita tÀisarv

DOUBLE

8-baidine platvormist sÔltuv vorming

Paramtype

Platvormist sÔltuv nagu int

PTR_DOUBLE =0 viit pikale reaalarvule

PTR_STRING =1 viit nulliga lÔpetatud stringile

PTR_DOUBLE_ARR =2 viit pikkade reaalarvude massiivile

PTR_STRING_ARR =3 viit stringide massiivile

PTR_CELL_ARR =4 viit lahtrite massiivile

NONE =5


funktsioonid

JÀrgnevalt on toodud selliste funktsioonide kirjeldused, mis kutsutakse vÀlja .

KÔikide funktsioonide kohta kehtib jÀrgnev:

void CALLTYPE fn(out, in1, in2, ...)

VÀljund: tagastatav vÀÀrtus

Sisend: mis tahes arv tĂŒĂŒpe (double&, char*, double*, char**, lahtrite ala), kus lahtrite ala on pikkade reaalarvude massiivi, stringide massiivi vĂ”i lahtrite massiivi tĂŒĂŒpi massiiv.

GetFunctionCount()

Tagastab funktsioonide arvu ilma viiteparameetri haldusfunktsioonideta. Igal funktsioonil on unikaalne arv vahemikus 0 ja nCount-1. Seda arvu lÀheb hiljem vaja funktsioonide GetFunctionData ja GetParameterDescription jaoks.

SĂŒntaks

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parameeter

USHORT &nCount:

VĂ€ljund: viide muutjale, millest otsitakse lisafunktsioonide arvu. NĂ€iteks: kui lisa pakub LibreOffice Calci jaoks 5 funktsiooni, siis nCount=5.

GetFunctionData()

Tuvastab kogu olulise teabe lisafunktsiooni kohta.

SĂŒntaks

void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)

Parameeter

USHORT& nNo:

Sisend: funktsiooni number vahemikus 0 kuni nCount-1 (kaasa arvatud).

char* pFuncName:

VÀljund: funktsiooni nimi nii, nagu nÀeb seda programmeerija, ehk nimi, mis on funktsioonil . See nimi ei ole seotud FunktsiooninÔustajas kasutatava nimega.

USHORT& nParamCount:

VÀljund: lisafunktsiooni parameetrite arv. See arv peab alati olema suurem kui 0, sest alati on olemas vÀhemalt tulemuse vÀÀrtus, maksimaalne arv on 16.

Paramtype* peType:

VĂ€ljund: viit massiivile, mis koosneb tĂ€pselt 16 muutujast tĂŒĂŒbiga Paramtype. Esimesed nParamCount kirjed tĂ€idetakse sobiva parameetri tĂŒĂŒbiga.

char* pInternalName:

VÀljund: funktsiooni nimi nii, nagu seda nÀeb kasutaja, ehk nagu see ilmub FunktsiooninÔustajas. VÔib sisaldada tÀppidega tÀhti.

Parameetrid pFuncName ja pInternalName on char-massiivid, mis on LibreOffice Calcis kasutusele vÔetud suurusega 256.

GetParameterDescription()

Lisafunktsiooni ja tema parameetrite lĂŒhikirjeldus. Soovi korral saab seda funktsiooni kasutada ka funktsiooni ja parameetrite kirjelduse kuvamiseks FunktsiooninĂ”ustajas.

SĂŒntaks

void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)

Parameeter

USHORT& nNo:

Sisend: funktsiooni number teegis vahemikus 0 kuni nCount-1.

USHORT& nParam:

Sisend: nÀitab, millise parameetri jaoks kirjeldus on esitatud; parameetrid algavad numbrist 1. Kui nParam on 0, peaks kirjeldus olema esitatud parameetris pDesc; sel juhul pole parameetril pName mingit tÀhendust.

char* pName:

VĂ€ljund: vĂ”tab parameetri nime vĂ”i tĂŒĂŒbi, nĂ€iteks sĂ”na "Arv" vĂ”i "String" vĂ”i "KuupĂ€ev" jne. LibreOffice Calcis on see kasutusele vĂ”etud kujul char[256].

char* pDesc:

VÀljund: vÔtab parameetri kirjelduse, nÀiteks "VÀÀrtus, mille pÔhjal universum arvutatakse." LibreOffice Calcis on see kasutusele vÔetud kujul char[256].

pName ja pDesc on char-massiivid; LibreOffice Calcis on need kasutusele vÔetud suurusega 256. Pane tÀhele, et FunktsiooninÔustajas saadaolev ruum on piiratud ja kÔiki 256 mÀrki ei saa kasutada.

Lahtrite alad

JĂ€rgmised tabelid sisaldavad teavet selle kohta, milliseid andmestruktuure peab vĂ€line programmimoodul lahtrialade edastamiseks sisaldama. LibreOffice Calc eristab sĂ”ltuvalt andmete tĂŒĂŒbist kolme erinevat massiivi.

Pikkade reaalarvude massiiv

Parameetrina saab edastada lahtrite ala vÀÀrtustega, mille tĂŒĂŒp on Arv vĂ”i Pikad reaalarvud. Pikkade reaalarvude massiiv mÀÀratakse LibreOffice Calcis jĂ€rgmiselt:

Nihe

Nimi

Kirjeldus

0

Vrg1

Veeru number lahtrite ala ĂŒlemises vasakpoolses nurgas. Nummerdus algab 0-st.

2

Rd1

Rea number lahtrite ala ĂŒlemises vasakpoolses nurgas. Nummerdus algab 0-st.

4

Tab1

Tabeli number lahtrite ala ĂŒlemises vasakpoolses nurgas. Nummerdus algab 0-st.

6

Vrg2

Veeru number lahtrite ala alumises parempoolses nurgas. Nummerdus algab 0-st.

8

Rd2

Rea number lahtrite ala alumises parempoolses nurgas. Nummerdus algab 0-st.

10

Tab2

Tabeli number lahtrite ala alumises parempoolses nurgas. Nummerdus algab 0-st.

12

Arv

JĂ€rgnevate elementide arv. TĂŒhje lahtreid ei loendata ega kĂ€sitleta.

14

Vrg

Elemendi veeru number. Nummerdus algab 0-st.

16

Rida

Elemendi rea number. Nummerdus algab 0-st.

18

Tab

Elemendi tabeli number. Nummerdus algab 0-st.

20

Viga

Vea kood, kusjuures vÀÀrtus 0 tÀhendab, et "viga puudub". Kui element pÀrineb valemiga lahtrist, mÀÀrab vea koodi valem.

22

VÀÀrtus

8-baidine IEEE muutuja tĂŒĂŒbiga pikk reaalarv / ujukomaarv

30

...

JĂ€rgmine element


Stringide massiiv

Lahtrite ala, mis sisaldab vÀÀrtusi andmetĂŒĂŒbiga tekst ja mida kĂ€sitletakse kui stringide massiivi. Stringide massiiv on LibreOffice Calcis defineeritud jĂ€rgnevalt:

Nihe

Nimi

Kirjeldus

0

Vrg1

Veeru number lahtrite ala ĂŒlemises vasakpoolses nurgas. Nummerdus algab 0-st.

2

Rd1

Rea number lahtrite ala ĂŒlemises vasakpoolses nurgas. Nummerdus algab 0-st.

4

Tab1

Tabeli number lahtrite ala ĂŒlemises vasakpoolses nurgas. Nummerdus algab 0-st.

6

Vrg2

Veeru number lahtrite ala alumises parempoolses nurgas. Nummerdus algab 0-st.

8

Rd2

Rea number lahtrite ala alumises parempoolses nurgas. Nummerdus algab 0-st.

10

Tab2

Tabeli number lahtrite ala alumises parempoolses nurgas. Nummerdus algab 0-st.

12

Arv

JĂ€rgnevate elementide arv. TĂŒhje lahterid ei loendata ega jĂ€eta vahele.

14

Vrg

Elemendi veeru number. Nummerdus algab 0-st.

16

Rida

Elemendi rea number. Nummerdus algab 0-st.

18

Tab

Elemendi tabeli number. Nummerdus algab 0-st.

20

Viga

Vea kood, kusjuures vÀÀrtus 0 tÀhendab, et "viga puudub". Kui element pÀrineb valemiga lahtrist, mÀÀrab vea koodi valem.

22

Pikkus

JÀrgmise stringi pikkus koos sulgeva null-baidiga. Kui pikkus koos sulgeva null-baidiga on paaritu vÀÀrtus, lisatakse stringile veel teinegi null-bait, et tulemuseks oleks paarisvÀÀrtus. SeetÔttu kasutatakse pikkuse arvutamiseks valemit ((stringipikkus+2)&~1).

24

String

String sulgeva null-baidiga

24+pikkus

...

JĂ€rgmine element


Lahtrite massiiv

Lahtrite massiive kasutatakse nii teksti kui ka arve sisaldavate lahtrialade kutsumiseks. Lahtrite massiiv on LibreOffice Calcis mÀÀratud jÀrgmiselt:

Nihe

Nimi

Kirjeldus

0

Vrg1

Veeru number lahtrite ala ĂŒlemises vasakpoolses nurgas. Nummerdus algab 0-st.

2

Rd1

Rea number lahtrite ala ĂŒlemises vasakpoolses nurgas. Nummerdus algab 0-st.

4

Tab1

Tabeli number lahtrite ala ĂŒlemises vasakpoolses nurgas. Nummerdus algab 0-st.

6

Vrg2

Veeru number lahtrite ala alumises parempoolses nurgas. Nummerdus algab 0-st.

8

Rd2

Rea number lahtrite ala alumises parempoolses nurgas. Nummerdus algab 0-st.

10

Tab2

Tabeli number lahtrite ala alumises parempoolses nurgas. Nummerdus algab 0-st.

12

Arv

JĂ€rgnevate elementide arv. TĂŒhje lahterid ei loendata ega jĂ€eta vahele.

14

Vrg

Elemendi veeru number. Nummerdus algab 0-st.

16

Rida

Elemendi rea number. Nummerdus algab 0-st.

18

Tab

Elemendi tabeli number. Nummerdus algab 0-st.

20

Viga

Vea kood, kusjuures vÀÀrtus 0 tÀhendab, et "viga puudub". Kui element pÀrineb valemiga lahtrist, mÀÀrab vea koodi valem.

22

TĂŒĂŒp

Lahtri tĂŒĂŒp, 0 == pikk reaalarv, 1 == string

24

Pikkuse vÀÀrtus

Kui tĂŒĂŒp == 0: 8-baidine IEEE muutuja tĂŒĂŒbiga pikk reaalarv / ujukomaarv

Kui tĂŒĂŒp == 1: jĂ€rgmise stringi pikkus koos sulgeva null-baidiga. Kui pikkus koos sulgeva null-baidiga on paaritu vÀÀrtus, lisatakse stringile veel teinegi null-bait, et tulemuseks oleks paarisvÀÀrtus. SeetĂ”ttu kasutatakse pikkuse arvutamiseks valemit ((stringipikkus+2)&~1).

26 kui tĂŒĂŒp==1

String

Kui tĂŒĂŒp == 1: string sulgeva null-baidiga

32 vÔi 26+pikkus

...

JĂ€rgmine element