Tilføjelsesfunktioner til programmering i LibreOfficeDev Calc

Advarselsikon

Den metode til udvidelse af Calc ved hjælp af tilføjelsesfunktioner, der er beskrevet i det følgende, er forældet. Grænsefladen er stadig gyldig og understøttet for at sikre kompatibilitet med eksisterende tilføjelsesfunktioner, men til programmering af nye tilføjelsesfunktioner bør du bruge de nye API-funktioner.


LibreOfficeDev Calc can be expanded by Add-Ins, which are external programming modules providing additional functions for working with spreadsheets. These are listed in the Function Wizard in the Add-In category. If you would like to program an Add-In yourself, you can learn here which functions must be exported by the so that the Add-In can be successfully attached.

LibreOfficeDev searches the Add-in folder defined in the configuration for a suitable . To be recognized by LibreOfficeDev, the must have certain properties, as explained in the following. This information allows you to program your own Add-In for Function Wizard of LibreOfficeDev Calc.

Begrebet tilføjelsesfunktioner

Hvert bibliotek med tilføjelsesfunktioner stiller flere forskellige funktioner til rådighed. Nogle funktioner bruges til administrative formål. Du kan vælge næsten et hvilket som helst navn til din egen funktion. Dog skal du følge nogle bestemte regler angående parameteroverførsel. De præcise konventioner for navngivning og procedurekalde varierer for forskellige platforme.

Functions of

Som minimum skal de administrative funktioner GetFunctionCount og GetFunctionData være tilstede. Ved hjælp af disse kan såvel funktioner, parametertyper og returværdier identificeres. Som returværdier understøttes dobbelt- og strengtyper. Som parametre kan understøttes typerne celleområder Dobbelt array, Streng array, og Celle array benyttes.

Parametre bliver videresendt via referencer. Derfor vil en ændring af disse værdier være mulig. Dog er dette ikke understøttet i LibreOfficeDev Calc, fordi det ikke giver mening i et regneark.

Biblioteker kan genindlæses under afvikling, og deres indhold kan analyseres af de administrative funktioner. For hver funktion er informationer om antal og type af parametre, interne og eksterne funktionsnavne og et administrationsnummer tilgængelige.

Funktionerne kaldes synkront og returnerer deres resultater straks. Realtidsfunktioner (asynkrone funktioner) er også mulige; dog er de ikke forklaret i detaljer på grund af deres kompleksitet.

Generel information om grænsefladen

Det maksimale antal parametre i en tilføjelsesfunktion i LibreOfficeDev Calc er 16: én returværdi og højst 15 argumenter.

Datatyperne defineres som følger:

Datatyper

Definition

CALLTYPE

Under Windows: FAR PASCAL (_far _pascal)

Andet: standard (operativsystemspecifik standard)

USHORT

2-byte heltal uden fortegn

DOUBLE

8-byte platformsafhængigt format

Paramtype

Platformsafhængigt som heltal

PTR_DOUBLE =0 pegepind til en DOUBLE

PTR_STRING =1 pegepind til en nul-termineret streng

PTR_DOUBLE_ARR =2 pegepind til en dobbelt matrix

PTR_STRING_ARR =3 pegepind til en strengmatrix

PTR_CELL_ARR =4 pegepind til en cellematrix

Ingen =5


functions

Following you will find a description of those functions, which are called at the .

For all functions, the following applies:

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

Output: Resulting value

Input: Any number of types (double&, char*, double*, char**, Cell area), where the Cell area is an array of types double array, string array, or cell array.

GetFunctionCount()

Returnerer antallet af funktioner udover administrationsfunktioner til henvisningsparametre. Hver funktion har et unikt nummer mellem 0 og nCount-1. Dette nummer skal bruges i GetFunctionData og GetParameterDescription funktionerne senere.

Syntaks

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parameter

USHORT &nCount:

Output: Reference to a variable, which is supposed to contain the number of Add-In functions. For example: If the Add-In provides 5 functions for LibreOfficeDev Calc, then nCount=5.

GetFunctionData()

Bestemmer alle de vigtige informationer om en tilføjelsesfunktion.

Syntaks

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

Parameter

USHORT& nNo:

Input: Function number between 0 and nCount-1, inclusively.

char* pFuncName:

Output: Function name as seen by the programmer, as it is named in the . This name does not determine the name used in the Function Wizard.

USHORT& nParamCount:

Output: Number of parameters in AddIn function. This number must be greater than 0, because there is always a result value; the maximum value is 16.

Paramtype* peType:

Output: Pointer to an array of exactly 16 variables of type Paramtype. The first nParamCount entries are filled with the suitable type of parameter.

char* pInternalName:

Output: Function name as seen by the user, as it appears in the Function Wizard. May contain umlauts.

pFuncName og pInternalName parametrene er tegnområder, som er implementeret med størrelse 256 i LibreOfficeDev Calc.

GetParameterDescription()

Giver en kort beskrivelse af tilføjelsesfunktionen og dens parametre. Denne funktion kan bruges som en mulighed for at vise en funktions- og parameterbeskrivelse i Funktionsguiden.

Syntaks

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

Parameter

USHORT& nNo:

Input: Number of the function in the library; between 0 and nCount-1.

USHORT& nParam:

Input: Indicates, for which parameter the description is provided; parameters start at 1. If nParam is 0, the description itself is supposed to be provided in pDesc; in this case, pName does not have any meaning.

char* pName:

Output: Takes up the parameter name or type, for example, the word "Number" or "String" or "Date", and so on. Implemented in LibreOfficeDev Calc as char[256].

char* pDesc:

Output: Takes up the description of the parameter, for example, "Value, at which the universe is to be calculated." Implemented in LibreOfficeDev Calc as char[256].

pName og pDesc er tegnområder; implementeret i LibreOfficeDev Calc med størrelse 256. Bemærk at den tilgængelige plads i Funktionsguiden er begrænset og at de 256 tegn ikke kan udnyttes fuldt ud.

Celleområder

De følgende tabeller indeholder information om hvilke data strukturer der skal leveres af et eksternt programmodul for at overføre celleområder. LibreOfficeDev Calc skelner mellem tre forskellige arrays afhængigt af datatypen.

Dobbelt matrix

Et celleområde med værdier som heltal eller dobbelt kan overføres som parameter. Et dobbelt array i LibreOfficeDev Calc er defineret som følger:

Offset

Name

Description

0

Kolonne 1

Kolonnenummer i det øvre venstre hjørne af celleområdet. Nummerering begynder ved 0.

2

Række 1

Rækkenummer i det øvre venstre hjørne af celleområdet. Nummerering begynder ved 0.

4

Tabel 1

Tabelnummer i det øvre venstre hjørne af celleområdet. Nummerering begynder ved 0.

6

Kolonne 2

Kolonnenummer i det nedre højre hjørne af celleområdet. Nummerering begynder ved 0.

8

Række 2

Rækkenummer i det nedre højre hjørne af celleområdet. Nummerering begynder ved 0.

10

Tabel 2

Tabelnummer i det nedre højre hjørne af celleområdet. Nummerering begynder ved 0.

12

Tæl

Antal af de følgende elementer. Tomme celler bliver ikke medtaget eller overført.

14

Kolonne

Kolonnenummer. Nummerering begynder ved 0.

16

Række

Rækkenummer; nummereringen starter ved 0.

18

Tabel

Tabelnummer; nummereringen starter ved 0.

20

Fejl

Fejlnummer, hvor værdien 0 er defineret som "ingen fejl." Hvis elementet kommer fra en formelcelle, er fejlværdien bestemt af formlen.

22

Værdi

8-byte IEEE-variabel af typen double (flydende komma med dobbelt præcision)

30

...

Næste element


Strengmatrix

Et celleområde som indeholder værdier af datatype Tekst og er overført som en strengtabel. En strengtabel i LibreOfficeDev Calc er defineret som følger:

Offset

Name

Description

0

Kolonne 1

Kolonnenummer i det øvre venstre hjørne af celleområdet. Nummerering begynder ved 0.

2

Række 1

Rækkenummer i det øvre venstre hjørne af celleområdet. Nummerering begynder ved 0.

4

Tabel 1

Tabelnummer i det øvre venstre hjørne af celleområdet. Nummerering begynder ved 0.

6

Kolonne 2

Kolonnenummer i det nedre højre hjørne af celleområdet. Nummerering begynder ved 0.

8

Række 2

Rækkenummer i det nedre højre hjørne af celleområdet. Nummerering begynder ved 0.

10

Tabel 2

Tabelnummer i det nedre højre hjørne af celleområdet. Nummerering begynder ved 0.

12

Tæl

Antal af de følgende elementer. Tomme celler bliver ikke medtaget eller overført.

14

Kolonne

Kolonnenummer. Nummerering begynder ved 0.

16

Række

Rækkenummer; nummereringen starter ved 0.

18

Tabel

Tabelnummer; nummereringen starter ved 0.

20

Fejl

Fejlnummer, hvor værdien 0 er defineret som "ingen fejl." Hvis elementet kommer fra en formelcelle, er fejlværdien bestemt af formlen.

22

LÆNGDE

Længde af den efterfølgende streng, medregnet den afsluttende nul-byte. Hvis længden medregnet den afsluttende nul-byte er ulige, tilføjes endnu en nul-byte, så et lige antal bytes opnås. Derfor beregnes Len som ((StrLen+2)&~1).

24

Streng

Streng med afsluttende nul-byte.

24+Len

...

Næste element


Cellematrix

Cellematricer bruges til at kalde celleområder som indeholder tekst såvel som tal. En cellematrix i LibreOfficeDev Calc er defineret som følger:

Offset

Name

Description

0

Kolonne 1

Kolonnenummer i det øvre venstre hjørne af celleområdet. Nummerering begynder ved 0.

2

Række 1

Rækkenummer i det øvre venstre hjørne af celleområdet. Nummerering begynder ved 0.

4

Tabel 1

Tabelnummer i det øvre venstre hjørne af celleområdet. Nummerering begynder ved 0.

6

Kolonne 2

Kolonnenummer i det nedre højre hjørne af celleområdet. Nummerering begynder ved 0.

8

Række 2

Rækkenummer i det nedre højre hjørne af celleområdet. Nummerering begynder ved 0.

10

Tabel 2

Tabelnummer i det nedre højre hjørne af celleområdet. Nummerering begynder ved 0.

12

Tæl

Antal af de følgende elementer. Tomme celler bliver ikke medtaget eller overført.

14

Kolonne

Kolonnenummer. Nummerering begynder ved 0.

16

Række

Rækkenummer; nummereringen starter ved 0.

18

Tabel

Tabelnummer; nummereringen starter ved 0.

20

Fejl

Fejlnummer, hvor værdien 0 er defineret som "ingen fejl." Hvis elementet kommer fra en formelcelle, er fejlværdien bestemt af formlen.

22

Type

Type af celleindholdet, 0 = Dobbelt, 1 = Streng

24

Værdi eller LÆNGDE

Hvis type == 0: 8-byte IEEE-variabel af typen double (flydende komma med dobbelt præcision)

Hvis typen = 1: Længden af den følgende streng, inklusiv afsluttende nul-byte. Hvis længden inklusiv afsluttende nul-byte er lig med en ulige værdi tilføjes endnu en nul-byte til strengen så en lige værdi er opnået. Derfor er længden beregnet som ((StrLen+2)&~1).

26 hvis type==1

Streng

Hvis type = 1: Streng med afsluttende nul-byte.

32 eller 26+LÆNGDE

...

Næste element