ເນື້ອໃນ

# ສ່ວນເສີມສຳລັບການຂຽນໂປຣແກຣມໃນ LibreOffice Calc

ວິທີການຂະຫຍາຍຄວາມສາມາດຂອງ Calc ໂດຍໃຊ້ສ່ວນເສີມ (Add-ins) ທີ່ຈະອະທິບາຍຕໍ່ໄປນີ້ແມ່ນວິທີທີ່ເກົ່າແລ້ວ. ອິນເຕີເຟດເຫຼົ່ານີ້ຍັງໃຊ້ໄດ້ ແລະ ໄດ້ຮັບການສະໜັບສະໜູນຢູ່ ເພື່ອຮັບປະກັນການເຮັດວຽກຮ່ວມກັບສ່ວນເສີມທີ່ມີຢູ່ແລ້ວ, ແຕ່ສຳລັບການຂຽນສ່ວນເສີມໃໝ່ ທ່ານຄວນໃຊ້ ຟັງຊັນ API ແບບໃໝ່.

LibreOffice Calc ສາມາດເພີ່ມຄວາມສາມາດໄດ້ດ້ວຍສ່ວນເສີມ (Add-ins), ເຊິ່ງເປັນໂມດູນການຂຽນໂປຣແກຣມພາຍນອກທີ່ໃຫ້ຟັງຊັນເພີ່ມເຕີມສຳລັບການເຮັດວຽກກັບສະເປຣດຊີດ. ຟັງຊັນເຫຼົ່ານີ້ຈະສະແດງຢູ່ໃນ ຕົວຊ່ວຍສ້າງຟັງຊັນ ພາຍໃຕ້ໝວດໝູ່ ສ່ວນເສີມ. ຖ້າທ່ານຕ້ອງການຂຽນສ່ວນເສີມດ້ວຍຕົນເອງ, ທ່ານສາມາດຮຽນຮູ້ໄດ້ທີ່ນີ້ວ່າຟັງຊັນໃດແດ່ທີ່ຕ້ອງຖືກສົ່ງອອກ (export) ໂດຍ shared library external DLL ເພື່ອໃຫ້ສ່ວນເສີມສາມາດເຊື່ອມຕໍ່ໄດ້ຢ່າງສຳເລັດ.

LibreOffice ຈະຄົ້ນຫາໃນໂຟນເດີສ່ວນເສີມທີ່ກຳນົດໄວ້ໃນການຕັ້ງຄ່າເພື່ອຫາ shared library DLL ທີ່ເໝາະສົມ. ເພື່ອໃຫ້ LibreOffice ຮັບຮູ້ໄດ້, shared library DLL ຕ້ອງມີຄຸນສົມບັດບາງຢ່າງຕາມທີ່ຈະອະທິບາຍຕໍ່ໄປນີ້. ຂໍ້ມູນນີ້ຈະຊ່ວຍໃຫ້ທ່ານສາມາດຂຽນສ່ວນເສີມຂອງທ່ານເອງສຳລັບ ຕົວຊ່ວຍສ້າງຟັງຊັນ ຂອງ LibreOffice Calc ໄດ້.

## ແນວຄິດຂອງສ່ວນເສີມ

ແຕ່ລະໄລບຣາຣີຂອງສ່ວນເສີມຈະໃຫ້ຟັງຊັນຫຼາຍຢ່າງ. ບາງຟັງຊັນຖືກໃຊ້ເພື່ອຈຸດປະສົງໃນການຈັດການ. ທ່ານສາມາດຕັ້ງຊື່ຟັງຊັນຂອງທ່ານເອງເປັນຊື່ອັນໃດກໍໄດ້ເກືອບທັງໝົດ. ຢ່າງໃດກໍຕາມ, ພວກມັນຕ້ອງປະຕິບັດຕາມກົດເກນບາງຢ່າງກ່ຽວກັບການສົ່ງຄ່າພາລາມິເຕີ. ຮູບແບບການຕັ້ງຊື່ ແລະ ການເອີ້ນໃຊ້ທີ່ແນ່ນອນອາດຈະແຕກຕ່າງກັນໄປຕາມແຕ່ລະແພລັດຟອມ.

### ຟັງຊັນຂອງ Shared Library AddIn DLL

ຢ່າງໜ້ອຍທີ່ສຸດ, ຟັງຊັນການຈັດການ GetFunctionCount ແລະ GetFunctionData ຕ້ອງມີຢູ່. ໂດຍການໃຊ້ຟັງຊັນເຫຼົ່ານີ້, ຈະສາມາດລະບຸຟັງຊັນລວມທັງປະເພດພາລາມິເຕີ ແລະ ຄ່າທີ່ສົ່ງຄືນມາໄດ້. ສຳລັບຄ່າທີ່ສົ່ງຄືນ, ລະບົບຮອງຮັບປະເພດ Double ແລະ String. ສຳລັບພາລາມິເຕີ, ຍັງຮອງຮັບພື້ນທີ່ຫ້ອງຂໍ້ມູນແບບ Double Array, String Array, ແລະ Cell Array ອີກດ້ວຍ.

ພາລາມິເຕີຖືກສົ່ງໂດຍການໃຊ້ອ້າງອີງ (references). ດັ່ງນັ້ນ, ໂດຍພື້ນຖານແລ້ວການປ່ຽນແປງຄ່າເຫຼົ່ານີ້ແມ່ນສາມາດເຮັດໄດ້. ຢ່າງໃດກໍຕາມ, ສິ່ງນີ້ບໍ່ໄດ້ຮັບການສະໜັບສະໜູນໃນ LibreOffice Calc ເພາະວ່າມັນບໍ່ມີຄວາມໝາຍພາຍໃນສະເປຣດຊີດ.

ໄລບຣາຣີສາມາດຖືກໂຫຼດໃໝ່ໄດ້ໃນຂະນະທີ່ໂປຣແກຣມກຳລັງເຮັດວຽກ ແລະ ເນື້ອໃນຂອງພວກມັນສາມາດຖືກວິເຄາະໂດຍຟັງຊັນການຈັດການ. ສຳລັບແຕ່ລະຟັງຊັນ, ຈະມີຂໍ້ມູນກ່ຽວກັບຈຳນວນ ແລະ ປະເພດຂອງພາລາມິເຕີ, ຊື່ຟັງຊັນພາຍໃນ ແລະ ພາຍນອກ, ລວມທັງໝາຍເລກການຈັດການ.

ຟັງຊັນຕ່າງໆຈະຖືກເອີ້ນໃຊ້ແບບຊິງໂຄຣນັດ (synchronously) ແລະ ສົ່ງຄ່າຄືນທັນທີ. ຟັງຊັນແບບເວລາຈິງ (asynchronous functions) ກໍສາມາດເຮັດໄດ້ເຊັ່ນກັນ; ຢ່າງໃດກໍຕາມ, ຈະບໍ່ມີການອະທິບາຍໃນລາຍລະອຽດເນື່ອງຈາກຄວາມຊັບຊ້ອນຂອງມັນ.

## ຂໍ້ມູນທົ່ວໄປກ່ຽວກັບອິນເຕີເຟດ

ຈຳນວນພາລາມິເຕີສູງສຸດໃນຟັງຊັນສ່ວນເສີມທີ່ເຊື່ອມຕໍ່ກັບ LibreOffice Calc ແມ່ນ 16: ຄ່າສົ່ງຄືນໜຶ່ງຄ່າ ແລະ ພາລາມິເຕີຂາເຂົ້າຂອງຟັງຊັນສູງສຸດ 15 ຕົວ.

ປະເພດຂໍ້ມູນຖືກກຳນົດໄວ້ດັ່ງນີ້:

ປະເພດຂໍ້ມູນ | ຄຳນິຍາມ
--- | ---
CALLTYPE | ພາຍໃຕ້ Windows: FAR PASCAL (_far _pascal) ອື່ນໆ: ຄ່າເລີ່ມຕົ້ນ (ຄ່າເລີ່ມຕົ້ນສະເພາະຂອງລະບົບປະຕິບັດການ)
USHORT | ຈຳນວນເຕັມບວກຂະໜາດ 2 Byte (unsigned Integer)
DOUBLE | ຮູບແບບຂະໜາດ 8 byte ທີ່ຂຶ້ນກັບແພລັດຟອມ
Paramtype | ຂຶ້ນກັບແພລັດຟອມ ຄືກັບ int PTR_DOUBLE =0 ຕົວຊີ້ໄປຫາ double PTR_STRING =1 ຕົວຊີ້ໄປຫາຂໍ້ຄວາມທີ່ລົງທ້າຍດ້ວຍສູນ (zero-terminated string) PTR_DOUBLE_ARR =2 ຕົວຊີ້ໄປຫາອາເຣ double PTR_STRING_ARR =3 ຕົວຊີ້ໄປຫາອາເຣຂໍ້ຄວາມ PTR_CELL_ARR =4 ຕົວຊີ້ໄປຫາອາເຣຂອງຫ້ອງຂໍ້ມູນ NONE =5

## ຟັງຊັນຂອງ Shared Library DLL

ຕໍ່ໄປນີ້ທ່ານຈະພົບກັບຄຳອະທິບາຍຂອງຟັງຊັນເຫຼົ່ານັ້ນ, ເຊິ່ງຖືກເອີ້ນໃຊ້ໃນ Shared Library external DLL.

ສຳລັບຟັງຊັນ Shared Library DLL ທັງໝົດ, ໃຫ້ໃຊ້ກົດເກນດັ່ງນີ້:

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

ຜົນອອກ (Output): ຄ່າຜົນຮັບ

ຂາເຂົ້າ (Input): ປະເພດຂໍ້ມູນຈຳນວນໃດໜຶ່ງ (double&, char*, double*, char**, ພື້ນທີ່ຫ້ອງ), ໂດຍທີ່ ພື້ນທີ່ຫ້ອງ ແມ່ນອາເຣຂອງປະເພດອາເຣ double, ອາເຣຂໍ້ຄວາມ, ຫຼື ອາເຣຫ້ອງຂໍ້ມູນ.

### GetFunctionCount()

ສົ່ງຄ່າຄືນຈຳນວນຟັງຊັນໂດຍບໍ່ລວມຟັງຊັນການຈັດການຂອງພາລາມິເຕີອ້າງອີງ. ແຕ່ລະຟັງຊັນຈະມີໝາຍເລກສະເພາະລະຫວ່າງ 0 ຫາ nCount-1. ໝາຍເລກນີ້ຈະຈຳເປັນສຳລັບຟັງຊັນ GetFunctionData ແລະ GetParameterDescription ໃນພາຍຫຼັງ.

ໄວຍາກອນ

void CALLTYPE GetFunctionCount(USHORT& nCount)

ພາລາມິເຕີ

USHORT &nCount:

ຜົນອອກ (Output): ການອ້າງອີງຫາຕົວປ່ຽນ ເຊິ່ງຄວນຈະບັນຈຸຈຳນວນຂອງຟັງຊັນສ່ວນເສີມ. ຕົວຢ່າງ: ຖ້າສ່ວນເສີມໃຫ້ 5 ຟັງຊັນສຳລັບ LibreOffice Calc, ຄ່າ nCount ກໍຈະເທົ່າກັບ 5.

### GetFunctionData()

ກຳນົດຂໍ້ມູນທີ່ສຳຄັນທັງໝົດກ່ຽວກັບຟັງຊັນສ່ວນເສີມ.

ໄວຍາກອນ

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

ພາລາມິເຕີ

USHORT& nNo:

ຂາເຂົ້າ (Input): ໝາຍເລກຟັງຊັນລະຫວ່າງ 0 ຫາ nCount-1.

char* pFuncName:

ຜົນອອກ (Output): ຊື່ຟັງຊັນຕາມທີ່ຜູ້ຂຽນໂປຣແກຣມເຫັນ, ເຊິ່ງຖືກຕັ້ງຊື່ໄວ້ໃນ Shared Library DLL. ຊື່ນີ້ບໍ່ແມ່ນຊື່ທີ່ຈະປະກົດຢູ່ໃນ ຕົວຊ່ວຍສ້າງຟັງຊັນ.

USHORT& nParamCount:

ຜົນອອກ (Output): ຈຳນວນພາລາມິເຕີໃນຟັງຊັນສ່ວນເສີມ. ຕົວເລກນີ້ຕ້ອງຫຼາຍກວ່າ 0, ເພາະວ່າຕ້ອງມີຄ່າຜົນຮັບສະເໝີ; ຄ່າສູງສຸດແມ່ນ 16.

Paramtype* peType:

ຜົນອອກ (Output): ຕົວຊີ້ (Pointer) ໄປຫາອາເຣຂອງຕົວປ່ຽນປະເພດ Paramtype ຈຳນວນ 16 ຕົວ. nParamCount ລາຍການທຳອິດຈະຖືກຕື່ມດ້ວຍປະເພດພາລາມິເຕີທີ່ເໝາະສົມ.

char* pInternalName:

ຜົນອອກ (Output): ຊື່ຟັງຊັນຕາມທີ່ຜູ້ໃຊ້ເຫັນ, ເຊິ່ງປະກົດຢູ່ໃນ ຕົວຊ່ວຍສ້າງຟັງຊັນ. ອາດມີເຄື່ອງໝາຍກຳກັບສຽງ (umlauts) ນຳໄດ້.

ພາລາມິເຕີ pFuncName ແລະ pInternalName ແມ່ນອາເຣ char, ເຊິ່ງຖືກນຳໃຊ້ດ້ວຍຂະໜາດ 256 ໃນ LibreOffice Calc.

### GetParameterDescription()

ໃຫ້ຄຳອະທິບາຍສັ້ນໆກ່ຽວກັບຟັງຊັນສ່ວນເສີມ ແລະ ພາລາມິເຕີຂອງມັນ. ຟັງຊັນນີ້ສາມາດໃຊ້ເພື່ອສະແດງຄຳອະທິບາຍຟັງຊັນ ແລະ ພາລາມິເຕີໃນ ຕົວຊ່ວຍສ້າງຟັງຊັນ ໄດ້.

ໄວຍາກອນ

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

ພາລາມິເຕີ

USHORT& nNo:

ຂາເຂົ້າ (Input): ໝາຍເລກຂອງຟັງຊັນໃນໄລບຣາຣີ; ລະຫວ່າງ 0 ຫາ nCount-1.

USHORT& nParam:

ຂາເຂົ້າ (Input): ລະບຸວ່າຄຳອະທິບາຍນີ້ແມ່ນຂອງພາລາມິເຕີຕົວໃດ; ພາລາມິເຕີເລີ່ມຈາກ 1. ຖ້າ nParam ເປັນ 0, ຄຳອະທິບາຍຕົວມັນເອງຄວນຈະຖືກລະບຸໃນ pDesc; ໃນກໍລະນີນີ, pName ຈະບໍ່ມີຄວາມໝາຍໃດໆ.

char* pName:

ຜົນອອກ (Output): ຮັບຊື່ພາລາມິເຕີ ຫຼື ປະເພດ, ຕົວຢ່າງ: ຄຳວ່າ "Number" ຫຼື "String" ຫຼື "Date" ແລະ ອື່ນໆ. ນຳໃຊ້ໃນ LibreOffice Calc ເປັນ char[256].

char* pDesc:

ຜົນອອກ (Output): ຮັບຄຳອະທິບາຍຂອງພາລາມິເຕີ, ຕົວຢ່າງ: "ຄ່າທີ່ຈະໃຊ້ໃນການຄຳນວນຈັກກະວານ." ນຳໃຊ້ໃນ LibreOffice Calc ເປັນ char[256].

pName ແລະ pDesc ແມ່ນອາເຣ char; ນຳໃຊ້ໃນ LibreOffice Calc ດ້ວຍຂະໜາດ 256. ກະລຸນາສັງເກດວ່າພື້ນທີ່ທີ່ມີຢູ່ໃນ ຕົວຊ່ວຍສ້າງຟັງຊັນ ມີຈຳກັດ ແລະ ຕົວອັກສອນ 256 ຕົວອາດຈະບໍ່ສາມາດໃຊ້ໄດ້ທັງໝົດ.

## ພື້ນທີ່ຫ້ອງຂໍ້ມູນ

ຕາຕະລາງຕໍ່ໄປນີ້ບັນຈຸຂໍ້ມູນກ່ຽວກັບໂຄງສ້າງຂໍ້ມູນທີ່ໂມດູນໂປຣແກຣມພາຍນອກຕ້ອງມີ ເພື່ອສົ່ງພື້ນທີ່ຫ້ອງຂໍ້ມູນ. LibreOffice Calc ແບ່ງອາເຣອອກເປັນສາມແບບທີ່ແຕກຕ່າງກັນ ຂຶ້ນກັບປະເພດຂໍ້ມູນ.

### Double Array

ສາມາດສົ່ງພື້ນທີ່ຫ້ອງທີ່ມີຄ່າເປັນປະເພດ Number/Double ເປັນພາລາມິເຕີໄດ້. ອາເຣ double ໃນ LibreOffice Calc ຖືກກຳນົດດັ່ງນີ້:

ອອຟເຊັດ (Offset) | ຊື່ | ຄຳອະທິບາຍ
--- | --- | ---
0 | Col1 | ໝາຍເລກຖັນໃນມຸມຊ້າຍເທິງຂອງພື້ນທີ່ຫ້ອງ. ການນັບເລີ່ມຈາກ 0.
2 | Row1 | ໝາຍເລກແຖວໃນມຸມຊ້າຍເທິງຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
4 | Tab1 | ໝາຍເລກຕາຕະລາງໃນມຸມຊ້າຍເທິງຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
6 | Col2 | ໝາຍເລກຖັນໃນມຸມຂວາລຸ່ມຂອງພື້ນທີ່ຫ້ອງ. ການນັບເລີ່ມຈາກ 0.
8 | Row2 | ໝາຍເລກແຖວໃນມຸມຂວາລຸ່ມຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
10 | Tab2 | ໝາຍເລກຕາຕະລາງໃນມຸມຂວາລຸ່ມຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
12 | Count | ຈຳນວນຂອງອົງປະກອບທີ່ຕາມມາ. ຫ້ອງທີ່ຫວ່າງເປົ່າຈະບໍ່ຖືກນັບ ຫຼື ຖືກສົ່ງມາ.
14 | Col | ໝາຍເລກຖັນຂອງອົງປະກອບ. ການນັບເລີ່ມຈາກ 0.
16 | Row | ໝາຍເລກແຖວຂອງອົງປະກອບ; ການນັບເລີ່ມຈາກ 0.
18 | Tab | ໝາຍເລກຕາຕະລາງຂອງອົງປະກອບ; ການນັບເລີ່ມຈາກ 0.
20 | Error | ໝາຍເລກຂໍ້ຜິດພາດ, ໂດຍທີ່ຄ່າ 0 ໝາຍເຖິງ "ບໍ່ມີຂໍ້ຜິດພາດ." ຖ້າອົງປະກອບມາຈາກຫ້ອງທີ່ມີສູດ, ຄ່າຂໍ້ຜິດພາດຈະຖືກກຳນົດໂດຍສູດນັ້ນ.
22 | ຄ່າ | ຕົວປ່ຽນ IEEE ຂະໜາດ 8 byte ປະເພດ double/floating point
30 | ... | ອົງປະກອບຖັດໄປ

### String Array

ພື້ນທີ່ຫ້ອງທີ່ບັນຈຸຄ່າປະເພດຂໍ້ຄວາມ (Text) ແລະ ຖືກສົ່ງເປັນອາເຣຂໍ້ຄວາມ. ອາເຣຂໍ້ຄວາມໃນ LibreOffice Calc ຖືກກຳນົດດັ່ງນີ້:

ອອຟເຊັດ (Offset) | ຊື່ | ຄຳອະທິບາຍ
--- | --- | ---
0 | Col1 | ໝາຍເລກຖັນໃນມຸມຊ້າຍເທິງຂອງພື້ນທີ່ຫ້ອງ. ການນັບເລີ່ມຈາກ 0.
2 | Row1 | ໝາຍເລກແຖວໃນມຸມຊ້າຍເທິງຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
4 | Tab1 | ໝາຍເລກຕາຕະລາງໃນມຸມຊ້າຍເທິງຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
6 | Col2 | ໝາຍເລກຖັນໃນມຸມຂວາລຸ່ມຂອງພື້ນທີ່ຫ້ອງ. ການນັບເລີ່ມຈາກ 0.
8 | Row2 | ໝາຍເລກແຖວໃນມຸມຂວາລຸ່ມຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
10 | Tab2 | ໝາຍເລກຕາຕະລາງໃນມຸມຂວາລຸ່ມຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
12 | Count | ຈຳນວນຂອງອົງປະກອບທີ່ຕາມມາ. ຫ້ອງທີ່ຫວ່າງເປົ່າຈະບໍ່ຖືກນັບ ຫຼື ຖືກສົ່ງມາ.
14 | Col | ໝາຍເລກຖັນຂອງອົງປະກອບ. ການນັບເລີ່ມຈາກ 0.
16 | Row | ໝາຍເລກແຖວຂອງອົງປະກອບ; ການນັບເລີ່ມຈາກ 0.
18 | Tab | ໝາຍເລກຕາຕະລາງຂອງອົງປະກອບ; ການນັບເລີ່ມຈາກ 0.
20 | Error | ໝາຍເລກຂໍ້ຜິດພາດ, ໂດຍທີ່ຄ່າ 0 ໝາຍເຖິງ "ບໍ່ມີຂໍ້ຜິດພາດ." ຖ້າອົງປະກອບມາຈາກຫ້ອງທີ່ມີສູດ, ຄ່າຂໍ້ຜິດພາດຈະຖືກກຳນົດໂດຍສູດນັ້ນ.
22 | Len | ຄວາມຍາວຂອງຂໍ້ຄວາມທີ່ຕາມມາ, ລວມທັງສູນໄບຕ໌ (zero byte) ປິດທ້າຍ. ຖ້າຄວາມຍາວລວມທັງສູນໄບຕ໌ປິດທ້າຍເປັນເລກຄີກ, ສູນໄບຕ໌ຕົວທີສອງຈະຖືກເພີ່ມເຂົ້າໃນຂໍ້ຄວາມເພື່ອໃຫ້ໄດ້ຄ່າເປັນເລກຄູ່. ດັ່ງນັ້ນ, Len ຈຶ່ງຖືກຄຳນວນໂດຍໃຊ້ ((StrLen+2)&~1).
24 | String | ຂໍ້ຄວາມທີ່ມີສູນໄບຕ໌ປິດທ້າຍ
24+Len | ... | ອົງປະກອບຖັດໄປ

### Cell Array

ອາເຣຂອງຫ້ອງຂໍ້ມູນ (Cell arrays) ຖືກໃຊ້ເພື່ອເອີ້ນໃຊ້ພື້ນທີ່ຫ້ອງທີ່ມີທັງຂໍ້ຄວາມ ແລະ ຕົວເລກ. ອາເຣຂອງຫ້ອງຂໍ້ມູນໃນ LibreOffice Calc ຖືກກຳນົດດັ່ງນີ້:

ອອຟເຊັດ (Offset) | ຊື່ | ຄຳອະທິບາຍ
--- | --- | ---
0 | Col1 | ໝາຍເລກຖັນໃນມຸມຊ້າຍເທິງຂອງພື້ນທີ່ຫ້ອງ. ການນັບເລີ່ມຈາກ 0.
2 | Row1 | ໝາຍເລກແຖວໃນມຸມຊ້າຍເທິງຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
4 | Tab1 | ໝາຍເລກຕາຕະລາງໃນມຸມຊ້າຍເທິງຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
6 | Col2 | ໝາຍເລກຖັນໃນມຸມຂວາລຸ່ມຂອງພື້ນທີ່ຫ້ອງ. ການນັບເລີ່ມຈາກ 0.
8 | Row2 | ໝາຍເລກແຖວໃນມຸມຂວາລຸ່ມຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
10 | Tab2 | ໝາຍເລກຕາຕະລາງໃນມຸມຂວາລຸ່ມຂອງພື້ນທີ່ຫ້ອງ; ການນັບເລີ່ມຈາກ 0.
12 | Count | ຈຳນວນຂອງອົງປະກອບທີ່ຕາມມາ. ຫ້ອງທີ່ຫວ່າງເປົ່າຈະບໍ່ຖືກນັບ ຫຼື ຖືກສົ່ງມາ.
14 | Col | ໝາຍເລກຖັນຂອງອົງປະກອບ. ການນັບເລີ່ມຈາກ 0.
16 | Row | ໝາຍເລກແຖວຂອງອົງປະກອບ; ການນັບເລີ່ມຈາກ 0.
18 | Tab | ໝາຍເລກຕາຕະລາງຂອງອົງປະກອບ; ການນັບເລີ່ມຈາກ 0.
20 | Error | ໝາຍເລກຂໍ້ຜິດພາດ, ໂດຍທີ່ຄ່າ 0 ໝາຍເຖິງ "ບໍ່ມີຂໍ້ຜິດພາດ." ຖ້າອົງປະກອບມາຈາກຫ້ອງທີ່ມີສູດ, ຄ່າຂໍ້ຜິດພາດຈະຖືກກຳນົດໂດຍສູດນັ້ນ.
22 | ປະເພດ | ປະເພດເນື້ອໃນຂອງຫ້ອງ, 0 == Double, 1 == String
24 | ຄ່າ ຫຼື ຄວາມຍາວ (Len) | ຖ້າປະເພດ == 0: ຕົວປ່ຽນ IEEE ຂະໜາດ 8 byte ປະເພດ double/floating point ຖ້າປະເພດ == 1: ຄວາມຍາວຂອງຂໍ້ຄວາມທີ່ຕາມມາ, ລວມທັງສູນໄບຕ໌ປິດທ້າຍ. ຖ້າຄວາມຍາວລວມທັງສູນໄບຕ໌ປິດທ້າຍເປັນເລກຄີກ, ສູນໄບຕ໌ຕົວທີສອງຈະຖືກເພີ່ມເຂົ້າໃນຂໍ້ຄວາມເພື່ອໃຫ້ໄດ້ຄ່າເປັນເລກຄູ່. ດັ່ງນັ້ນ, Len ຈຶ່ງຖືກຄຳນວນໂດຍໃຊ້ ((StrLen+2)&~1).
26 ຖ້າປະເພດ == 1 | String | ຖ້າປະເພດ == 1: ຂໍ້ຄວາມທີ່ມີສູນໄບຕ໌ປິດທ້າຍ
32 ຫຼື 26+Len | ... | ອົງປະກອບຖັດໄປ

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!