Funktsioonide CALL ja REGISTER kasutamine

NB! : Ettevaatust!    Registri vale redigeerimine võib teie operatsioonisüsteemi tõsiselt kahjustada, tekitades vajaduse see uuesti installida. Microsoft ei taga, et registri valest redigeerimisest tulenevaid probleeme on võimalik lahendada. Enne registri redigeerimist varundage kõik väärtuslikud andmed. Värskeima teabe arvuti registri kasutamise ja kaitsmise kohta leiate Microsoft Windowsi spikrist.

Selles artiklis kirjeldatakse Microsoft Exceli funktsioonide CALL, REGISTER ja REGISTER.ID valemisüntaksit ja kasutamist.

Märkus. :  Rakenduses Excel Online pole funktsioonid CALL ja REGISTER saadaval.

Selle artikli teemad

Kirjeldus

Andmetüübid

Kommentaarid

Lisateave andmetüüpide kohta

F- ja G-andmetüübid

K-andmetüüp

O-andmetüüp

P-andmetüüp

R-andmetüüp – Microsoft Exceli funktsioonide kutsumine DLL-teekidest

Hävivad funktsioonid ja ümberarvutus

Muutmine kohapeal – tühjad funktsioonid

Kirjeldus

Käesolevas artiklis kirjeldatakse funktsioonide CALL, REGISTER ja REGISTER.ID kasutatavaid argumentide ja tagastusväärtuste andmetüüpe. Argumendid ja tagastusväärtused erinevad veidi sõltuvalt töökeskkonnast. Need erinevused on esitatud andmetüüpide tabelis.

Lehe algusse

Andmetüübid

Funktsioonides CALL, REGISTER ja REGISTER.ID määrab argument teksti_tüüp tagastusväärtuse andmetüübi ja DLL-funktsioonide või koodiressursside kõigi argumentide andmetüübid. Argumendi teksti_tüüp esimene märk määrab tagastusväärtuse andmetüübi. Ülejäänud märgid osutavad kõigi argumentide andmetüüpidele. Näiteks DLL-funktsioon, mis tagastab ujukomaarvu ja tunnistab argumentidena täisarvu ja ujukomaarvu, nõuab, et argumendiks teksti_tüüp oleks "BIB".

Järgnev tabel sisaldab Microsoft Exceli poolt tunnustatud andmetüüpide koodide täielikku loendit, iga andmetüübi kirjeldust, argumendi või tagastusväärtuse edastusviisi ning andmetüübi tüüpdeklaratsiooni C-programmeerimiskeeles.

Kood

Kirjeldus

Edastatakse

C-deklaratsioon

A

Loogika
(FALSE= 0, TRUE = 1)

väärtus

short int

B

IEEE 8-baidine ujukomaarv

väärtus
(Windows)

viide (Macintosh)

double
(Windows)

double * (Macintosh)

C

Tühja lõpuga string (stringi suurim pikkus = 255)

viide

char *

D

Baitides arvestatud string (esimene bait sisaldab stringi pikkust, stringi suurim pikkus = 255 märki)

viide

Unsigned char *

E

IEEE 8-baidine ujukomaarv

viide

double *

F

Tühja lõpuga string (stringi suurim pikkus = 255 märki)

viide (muutmine kohapeal)

char *

G

Baitides arvestatud string (esimene bait sisaldab stringi pikkust, stringi suurim pikkus = 255 märki)

viide (muutmine kohapeal)

unsigned char *

H

Märgita 2-baidine täisarv

väärtus

unsigned short int

I

Märgiga 2-baidine täisarv

väärtus

short int

J

Märgiga 4-baidine täisarv

väärtus

long int

K

Massiiv

viide

FP *

L

Loogika
(FALSE= 0, TRUE = 1)

viide

short int *

M

Märgiga 2-baidine täisarv

viide

short int *

N

Märgiga 4-baidine täisarv

viide

long int *

O

Massiiv

viide

Edastatakse kolme argumenti:
unsigned short int *
unsigned short int *
double [ ]

P

Microsoft Exceli OPER-andmestruktuur

viide

OPER *

R

Microsoft Exceli XLOPER-andmestruktuur

viide

XLOPER *

Lehe algusse

Kommentaarid

  • C-keele deklaratsioonid põhinevad eeldusel, et kompilaatori vaikeväärtusteks on 8-baidised kahekordsed arvud, 2-baidised lühikesed täisarvud ja 4-baidised pikad täisarvud.

  • Microsoft Windowsi programmeerimiskeskkonnas on kõik viidad kaugviidad. Näiteks tuleb teil Microsoft Windowsis deklareerida D-andmetüübi kood kui unsigned char far *.

  • Kõiki DLL-teekide ja koodiressursside funktsioone nimetatakse Pascali kutsereeglistiku järgi. Enamik C-kompilaatoreid lubab kasutada Pascali kutsereeglistikku, lisades funktsiooni deklaratsioonile Pascali võtmesõna, nagu näitab järgnev näide: pascal void main (rows,columns,a)

  • Kui funktsioon kasutab tagastatava väärtuse andmetüübina edastatakse-viitena-tüüpi, võite tagastatava väärtusena edastada tühiviida. Microsoft Excel tõlgendab tühiviita kui veaväärtust #NUM!.

Lehe algusse

Lisateave andmetüüpide kohta

See lõik sisaldab üksikasjalikku teavet F-, G-, K-, O-, P- ja R-andmetüüpide kohta ja muud teavet argumendi teksti_tüüp kohta.

F- ja G-andmetüübid

F- ja G-andmetüüpide puhul võib funktsioon teisendada Microsoft Exceli määratud stringipuhvri. Kui tagastusväärtuse tüübikood on F või G, ignoreerib Microsoft Excel funktsiooni tagastusväärtust. Selle asemel leiab Microsoft Excel funktsiooni argumentide loendist esimese vastava andmetüübi (F või G) ja võtab siis tagastusväärtusena määratud stringipuhvri praeguse sisu. Microsoft Excel määrab argumendile 256 baiti, nii võib funktsioon tagastada pikema stringi kui vastuvõetud string.

Lehe algusse

K-andmetüüp

K-andmetüüp kasutab viita muutuva suurusega FP-struktuurile. See struktuur tuleb määratleda DLL-teegis või koodiressursis järgnevalt:

typedef struct _FP
{
unsigned short int rows;
unsigned short int columns;
double array[1]; /* Actually, array[rows][columns] */
} FP;

Deklaratsioon double array[1] määrab mälu ainult ühe elemendiga massiivile. Tegeliku massiivi elementide arv võrdub ridade arvu ja veergude arvu korrutisega.

Lehe algusse

O-andmetüüp

O-andmetüüpi saab kasutada ainult argumendina, mitte tagastusväärtusena. See edastab kolme üksust: viita massiivi ridade arvule, viita massiivi veergude arvule ja viita ujukomaarvude kahemõõtmelisele massiivile.

Väärtuse tagastamise asemel võib funktsioon muuta O-andmetüübi poolt edastatud massiivi. Selleks võib kasutada argumendina teksti_tüüp stringi ">O". Lisateabe saamiseks vt allpool osa "Muutmine kohapeal – tühistatud funktsioonid".

O-andmetüüp loodi otseühilduvuse saavutamiseks Fortrani DLL-teekidega, mis edastavad argumente viitena.

Lehe algusse

P-andmetüüp

P-andmetüüp on viit OPER-struktuurile. OPER-struktuur sisaldab 8 baiti andmeid, millele järgneb 2-baidine andmetüüpi määrav identifikaator. P-andmetüübi puhul võib DLL-funktsioon või koodiressurss võtta ja tagastada suvalist Microsoft Exceli andmetüüpi.

OPER-struktuuri määratletakse järgnevalt:

typedef struct _oper

{
union
{
double num;
unsigned char *str;
unsigned short int bool;
unsigned short int err;
struct
{
struct _oper *lparray;
unsigned short int rows;
unsigned short int columns;
} array;
} val;
unsigned short int type;
} OPER;

Tüübiväli sisaldab ühte nendest väärtustest.

Tüüp

Kirjeldus

Kasutatav väärtuste väli

1

Arvuline

num

2

String (esimene bait sisaldab stringi pikkust)

str

4

Kahendmuutuja (loogika)

bool

16

Viga: veaväärtused on:

0#NULL!

7#DIV/0!

15#VALUE!

23#REF!

29#NAME?

36#NUM!

42#N/A

err

64

Massiiv

array

128

Puuduv argument

256

Tühi lahter

Viimast kahte väärtust saab kasutada ainult argumentidena, mitte tagastusväärtustena. Puuduva argumendi väärtus (128) edastatakse, kui kutsuja jätab argumendi ära. Tühja lahtri väärtus (256) edastatakse, kui kutsuja edastab viite tühjale lahtrile.

Lehe algusse

R-andmetüüp – Microsoft Exceli funktsioonide kutsumine DLL-teekidest

R-andmetüüp on viit XLOPER-struktuurile, mis on OPER-struktuuri laiendatud versioon. Microsoft Exceli versioonis 4.0 ja hilisemates versioonides võite kasutada R-andmetüüpi DLL-teekide ja koodiressursside kirjutamiseks, mis kutsuvad Microsoft Exceli funktsioone. XLOPER-struktuuri puhul võib DLL-funktsioon lisaks andmete edastamisele edastada leheviiteid ja teostada voogude juhtimist. R-andmetüübi ja Microsoft Exceli rakendusliidese (API-liidese) täielik kirjeldamine jääb selle teema ulatusest välja. Käsiraamat Microsoft Office XP Developer's Guide sisaldab üksikasjalikku teavet R-andmetüübi, Microsoft Exceli API-liidese ja paljude teiste Microsoft Exceli tehniliste aspektide kohta.

Lehe algusse

Hävivad funktsioonid ja ümberarvutus

Microsoft Excel arvutab tavaliselt DLL-funktsiooni või koodiressurssi ainult siis, kui see on sisestatud lahtrisse, kui muutub üks selle eelkäijatest või kui lahtrit arvutatakse makro toimimise ajal. Võite muuta töölehel DLL-funktsiooni või koodiressursi hävivaks, mis tähendab, et see arvutab ümber iga kord, kui arvutatakse ümber töölehte. Funktsiooni muutmiseks hävivaks lisage argumendi teksti_tüüp viimase märgina hüüumärgi (!).

Näiteks programmis Microsoft Excel for Windows arvutab järgmine töölehe valem ümber iga kord, kui arvutatakse ümber töölehte:

CALL("Kernel32";"GetTickCount";"J!")

Lehe algusse

Muutmine kohapeal – tühjad funktsioonid

Võite kasutada tagastustüübi koodina argumendis teksti_tüüp ainsat märki n, kus n on arv vahemikus 1-9. See annab Microsoft Excelile käsu väärtuse tagastamise asemel muuta muutujat asukohas, kuhu osutab argument number n argumendis teksti_tüüp. Seda nimetatakse ka muutmiseks kohapeal. Argument number n peab kuuluma andmetüüpi edastatakse-viitena (C, D, E, F, G, K, L, M, N, O, P või R). DLL-funktsioon või koodiressurss tuleb samuti deklareerida void võtmesõnaga C-keeles või procedure võtmesõnaga Pascalis.

Näiteks võib DLL-funktsioon, mis võtab argumentidena tühja lõpuga stringi ja kaks viita täisarvudele, muuta stringi kohapeal. Kasutage argumendina teksti_tüüp stringi "1FMM" ja tühistage funktsioon.

Varasemad versioonid kui Microsoft Excel 4.0 kasutasid esimese argumendi muutmiseks kohapeal märki >; polnud mingit võimalust muuta muud argumenti kui esimest. Märk > on ekvivalentne võrdusega n = 1 Microsoft Exceli versioonis 4.0 ja hilisemates versioonides.

Lehe algusse

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liituge Office Insideri programmiga

Kas sellest teabest oli abi?

Täname tagasiside eest!

Täname tagasiside eest! Tundub, et võiksime teid kokku viia ühega meie Office'i tugiagentidest, kes aitab teil probleemi lahendada.

×