IBM Lotus Symphony


Tillegg for programmering i Lotus Symphony Spreadsheets

Advarselsikon Metoden for å utvide Lotus Symphony Spreadsheets med tilleggsfunksjoner som er beskrevet nedenfor, er foreldet. Grensesnittene er fortsatt gyldige og støttes for å sikre kompatibilitet med eksisterende tilleggsfunksjoner, men til programmering av nye tilleggsfunksjoner bør du bruke de nye API-funksjonene.

Lotus Symphony Spreadsheets kan utvides med tilleggsfunksjoner, som er eksterne programmeringsmoduler som utvider funksjonaliteten ved arbeid med regneark. Du finner en liste over dem i funksjonsveiviseren i kategorien Tillegg. Hvis du vil programmere en tilleggsfunksjon selv, kan du lære her hvilke funksjoner som må eksporteres med den eksterne DLLen, slik at tilleggsfunksjonen kan knyttes til programmet.

Lotus Symphony søker etter en passende DLL i mappen for tilleggsfunksjoner som er definert i konfigurasjonen. For å gjenkjennes av Lotus Symphony må DLLen ha visse egenskaper, slik det er forklart nedenfor. Denne informasjonen gjør det mulig for deg å programmere din egen tilleggsfunksjon for funksjonsveiviseren i Lotus Symphony Spreadsheets.

Tilleggskonseptet

Hvert tilleggsbibliotek har flere funksjoner. Noen funksjoner brukes bare til administrasjon. Du kan velge nesten et hvilket som helst navn for funksjonene. De må imidlertid følge visse regler når det gjelder parameteroverføring. De eksakte navne- og oppkallskonvensjonene varierer for forskjellige plattformer.

Funksjoner i tilleggs-DLLen

Som et minimum må administrasjonsfunksjonene GetFunctionCount og GetFunctionData finnes. Ved hjelp av disse kan funksjonene, parametertypene og returverdiene bestemmes. Som returverdier støttes typene Dobbel og Streng. Som parametere støttes også celleområdene Dobbel matrise, Strengematrise og Cellematrise.

Parametere blir overført ved hjelp av referanser. Derfor er det i teorien mulig å endre disse verdiene. Dette støttes imidlertid ikke i Lotus Symphony Spreadsheets, fordi det ikke har noen mening i regneark.

Biblioteker kan lastes inn på nytt under kjøring, og innholdet kan analyseres av administrasjonsfunksjonene. For hver funksjon er det tilgjengelig informasjon om antall og type parametere, interne og eksterne funksjonsnavn og et administrativt nummer.

Funksjonene blir anropt samtidig, og returnerer resultatene umiddelbart. Sanntidsfunksjoner (asynkrone funksjoner) er også mulige, men de blir ikke forklart i detalj på grunn av deres kompleksitet.

Generell informasjon om grensesnittet

Det maksimale antallet parametere i en tilleggsfunksjon som er tilknyttet Lotus Symphony Spreadsheets, er 16: en returverdi og maksimalt 15 funksjonsinndataparametere.

Datatypene er definert slik:

Tabell 1. Datatypedefinisjoner
Datatype Definisjon
CALLTYPE

Under Windows: FAR PASCAL (_far _pascal)

Andre: Standard (operativsystemspesifikk standard)

USHORT 2 bytes heltall uten fortegn
DOUBLE 8 bytes plattformavhengig format
Paramtype

Plattformavhengig likt heltall

PTR_DOUBLE =0 peker til en dobbel

PTR_STRING =1 peker til nullavsluttet streng

PTR_DOUBLE_ARR =2 peker til dobbeltmatrise

PTR_STRING_ARR =3 peker til strengematrise

PTR_CELL_ARR =4 peker til cellematrise

NONE =5

DLL-funksjoner

Nedenfor finner du en beskrivelse av disse funksjonene, som kalles opp ved den eksterne DLLen.

For alle DLL-funksjoner gjelder følgende:

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

Utdata: Resultatverdi

Inndata: Et hvilket som helst antall typer (double&, char*, double*, char**, celleområde), der celleområde er en matrise av typen dobbeltmatrise, strengematrise eller cellematrise.

GetFunctionCount()

Returner antall funksjoner uten styringsfunksjonene til referanseparameteren. Hver funksjon har et unikt nummer mellom 0 og nCount-1. Dette nummeret kreves senere for funksjonene GetFunctionData og GetParameterDescription.

Syntaks

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parameter

USHORT &nCount:

Utdata: Referanse til en variabel, som er ment å inneholde antallet tilleggsfunksjoner. Hvis for eksempel tillegget har fem funksjoner for Lotus Symphony Spreadsheets, er nCount=5.

GetFunctionData()

Bestemmer all viktig informasjon om en tilleggsfunksjon.

Syntaks

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

Parameter

USHORT& nNo:

Inndata: Funksjonsnummer mellom 0 og nCount-1.

char* pFuncName:

Utdata: Funksjonsnavn slik programmereren ser det, slik det er angitt i DLLen. Dette navnet bestemmer ikke navnet som brukes i funksjonsveiviseren.

USHORT& nParamCount:

Utdata: Antall parametere i AddIn-funksjonen. Dette tallet må være større enn 0, for det er alltid en resultatverdi. Maksimalverdien er 16.

Paramtype* peType:

Utdata: Peker til en matrise med nøyaktig 16 variabler av typen Paramtype. De første nParamCount-oppføringene er fylt med en parameter av passende type.

char* pInternalName:

Utdata: Funksjonsnavn slik brukeren ser det, slik det blir vist i funksjonsveiviseren. Kan inneholde tødler.

Parameterne pFuncName og pInternalName er tegnmatriser, som er implementert med størrelse 256 i Lotus Symphony Spreadsheets.

GetParameterDescription()

Gir en kort beskrivelse av tilleggsfunksjonen og dens parametere. Som alternativ kan denne funksjonen brukes til å vise en funksjons- og parameterbeskrivelse i funksjonsveiviseren.

Syntaks

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

Parameter

USHORT& nNo:

Inndata: Funksjonens nummer i biblioteket, mellom 0 og nCount-1.

USHORT& nParam:

Inndata: Angir hvilken parameter beskrivelsen gjelder; parametere starter på 1. Hvis nParam er 0, skal selve beskrivelsen være gitt i pDesc. I dette tilfellet gir ikke pName noen mening.

char* pName:

Utdata: Tar opp parameternavnet eller -typen, for eksempel ordet "Tall" eller "Streng" eller "Dato" osv. Implementert i Lotus Symphony Spreadsheets som char[256].

char* pDesc:

Utdata: Tar opp beskrivelsen av parameteren, for eksempel "Verdi" som universet skal beregnes med. Implementert i Lotus Symphony Spreadsheets som char[256].

pName og pDesc er tegnmatriser, som er implementert i Lotus Symphony Spreadsheets med størrelsen 256. Legg merke til at plassen som er tilgjengelig i funksjonsveiviseren, er begrenset, og at de 256 tegnene ikke kan brukes fullt ut.

Celleområder

De følgende tabellene inneholder informasjon om hvilke datastrukturer eksterne programmoduler må ha for å overføre celleområder. Lotus Symphony Spreadsheets skiller mellom tre ulike matriser, avhengig av datatype.

Dobbel matrise

Som parameter, et celleområde med verdier av Tall/Dobbel-typen sendt. En dobbeltmatrise i Lotus Symphony Spreadsheets er definert slik:

Tabell 2. Definisjon av en dobbeltmatrise
Forskyvning Navn Beskrivelse
0 Kol1 Kolonnenummer i det øvre venstre hjørnet av celleområdet; nummereringen starter på 0.
2 Rad1 Radnummer i det øvre venstre hjørnet av celleområdet; nummereringen starter på 0.
4 Tab1 Tabellnummer i det øvre venstre hjørnet av celleområdet; nummereringen starter på 0.
6 Kol2 Kolonnenummer i det nedre høyre hjørnet av celleområdet; nummereringen starter på 0.
8 Rad2 Radnummer i det nedre høyre hjørnet av celleområdet; nummereringen starter på 0.
10 Tab2 Tabellnummer i det nedre høyre hjørnet av celleområdet; nummereringen starter på 0.
12 Antall Antall av følgende elementer. Tomme celler blir ikke talt eller overført.
14 Kol Elementets kolonnenummer; nummereringen starter på 0.
16 Rad Elementets radnummer; nummereringen starter på 0.
18 Tab Elementets tabellnummer; nummereringen starter på 0.
20 Feil Feilnummer, der verdien 0 er definert som "ingen feil". Hvis elementet kommer fra en formelcelle, blir feilverdien bestemt av formelen.
22 Verdi 8 bytes IEEE-variabel av typen dobbel/flytetall
30 ... Neste element

Strengmatrise

Et celleområde som inneholder verdier av datatypen Tekst, og som overføres som en strengmatrise. En strengmatrise i Lotus Symphony Spreadsheets er definert slik:

Tabell 3. Definisjon av en strengmatrise
Forskyvning Navn Beskrivelse
0 Kol1 Kolonnenummer i det øvre venstre hjørnet av celleområdet; nummereringen starter på 0.
2 Rad1 Radnummer i det øvre venstre hjørnet av celleområdet; nummereringen starter på 0.
4 Tab1 Tabellnummer i det øvre venstre hjørnet av celleområdet; nummereringen starter på 0.
6 Kol2 Kolonnenummer i det nedre høyre hjørnet av celleområdet; nummereringen starter på 0.
8 Rad2 Radnummer i det nedre høyre hjørnet av celleområdet; nummereringen starter på 0.
10 Tab2 Tabellnummer i det nedre høyre hjørnet av celleområdet; nummereringen starter på 0.
12 Antall Antall av følgende elementer. Tomme celler blir ikke talt eller overført.
14 Kol Elementets kolonnenummer; nummereringen starter på 0.
16 Rad Elementets radnummer; nummereringen starter på 0.
18 Tab Elementets tabellnummer; nummereringen starter på 0.
20 Feil Feilnummer, der verdien 0 er definert som "ingen feil". Hvis elementet kommer fra en formelcelle, blir feilverdien bestemt av formelen.
22 Len Lengden til den følgende strengen, inkludert avsluttende nullbyte. Hvis lengden med avsluttende nullbyte er en oddetallsverdi, tilføyes en ekstra nullbyte til strengen, slik at en lik verdi oppnås. Len beregnes derfor med ((StrLen+2)&~1).
24 Streng Streng med avsluttende nullbyte
24+Len ... Neste element

Cellematrise

Cellematriser brukes til å anrope celleområder som inneholder både tekst og tall. En cellematrise i Lotus Symphony Spreadsheets er definert slik:

Tabell 4. Definisjon av en cellematrise
Forskyvning Navn Beskrivelse
0 Kol1 Kolonnenummer i det øvre venstre hjørnet av celleområdet; nummereringen starter på 0.
2 Rad1 Radnummer i det øvre venstre hjørnet av celleområdet; nummereringen starter på 0.
4 Tab1 Tabellnummer i det øvre venstre hjørnet av celleområdet; nummereringen starter på 0.
6 Kol2 Kolonnenummer i det nedre høyre hjørnet av celleområdet; nummereringen starter på 0.
8 Rad2 Radnummer i det nedre høyre hjørnet av celleområdet; nummereringen starter på 0.
10 Tab2 Tabellnummer i det nedre høyre hjørnet av celleområdet; nummereringen starter på 0.
12 Antall Antall av følgende elementer. Tomme celler blir ikke talt eller overført.
14 Kol Elementets kolonnenummer. Nummereringen starter på 0.
16 Rad Elementets radnummer; nummereringen starter på 0.
18 Tab Elementets tabellnummer; nummereringen starter på 0.
20 Feil Feilnummer, der verdien 0 er definert som "ingen feil". Hvis elementet kommer fra en formelcelle, blir feilverdien bestemt av formelen.
22 Type Typen celleinnhold, 0 == Dobbel, 1 == Streng
24 Verdi av Len

Hvis type == 0: 8 bytes IEEE-variabel av typen dobbel/flytetall

Hvis type == 1: Lengden av følgende strenge, inkludert avsluttende nullbyte. Hvis lengden med avsluttende nullbyte er en oddetallsverdi, tilføyes en ekstra nullbyte til strengen, slik at en lik verdi oppnås. Len beregnes derfor med ((StrLen+2)&~1).

26 hvis type==1 Streng Hvis type == 1: Streng med avsluttende nullbyte
32 eller 26+Len ... Neste element

Tilbakemelding om produktet | Annen dokumentasjon | Varemerker