Contents

# រូបមន្ត​បន្ថែម​សម្រាប់​សរសេរ​កម្មវិធី​ក្នុង LibreOffice Calc

វិធីសាស្ត្រ​នៃ​ការ​ពង្រីក Calc ដោយ​រូបមន្ត​បន្ថែម​ដែល​បាន​ពណ៌នា​ខាង​ក្រោមគឺ​ហួស​សម័យហើយ ។ ចំណុច​ប្រទាក់​នៅ​តែ​អាច​ប្រើ​បាន និង​គាំ​ទ្រ ដើម្បី​ធានា​សមត្ថភាព​រូបមន្ត​បន្ថែម​ដែល​មាន​ស្រាប់ ប៉ុន្តែ​សម្រាប់​ការ​សរសេរ​រូបមន្ត​បន្ថែម​ថ្មី​មួយ អ្នក​គួរ​ប្រើ អនុគមន៍ API ថ្មី ។

LibreOffice 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 shared libraryexternal DLL so that the Add-In can be successfully attached.

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

## គំនិត​រូបមន្ត​បន្ថែម

បណ្ណាល័យ​រូបមន្ត​បន្ថែម​នីមួយៗ ផ្តល់​នូវ​អនុគមន៍​ជា​ច្រើន ។ អនុគមន៍​​ខ្លះ​ត្រូវ​បាន​ប្រើ​សម្រាប់​គោល​បំណង​គ្រប់គ្រង ។ អ្នក​អាច​ជ្រើស​ស្ទើរ​តែ​គ្រប់​ឈ្មោះ សម្រាប់​អនុគមន៍​ផ្ទាល់​ខ្លួន​របស់​អ្នក ។ ទោះ​យ៉ាង​ណា ពួក​វា​ក៏​ត្រូវតែ​អនុវត្ត​តាម​ក្បួន​ពិត​ប្រាកដ​ដែរ ដោយ​គោរព​តាម​ការ​ហុច​ប៉ារ៉ាម៉ែត្រ ។ ការ​ដាក់​ឈ្មោះ និង​ការ​ហៅ​សម្មតិកម្ម នឹង​ខុស​គ្នា​សម្រាប់​វេទិកា​ផ្សេង​គ្នា ។

### Functions of Shared LibraryAddIn DLL

នៅ​កម្រិត​អប្បបរមា ត្រូវ​តែ​មាន​អនុគមន៍​គ្រប់គ្រង GetFunctionCount និង​GetFunctionData ។ ដោយ​ប្រើ​ទាំង​នេះ អនុគមន៍​ព្រម​ទាំង​ប្រភេទ​ប៉ារ៉ាម៉ែត្រ និង​តម្លៃ​ត្រឡប់​អាច​ត្រូវ​បាន​កំណត់ ។ ជា​តម្លៃ​ត្រឡប់ ប្រភេទ​ទ្វេ និង​ខ្សែ​អក្សរ​​ត្រូវ​បាន​គាំទ្រ ។​​ ជា​ប៉ារ៉ាម៉ែត្រ តំបន់​ក្រឡា អារេ​ទ្វេ អារេ​ខ្សែ​អក្សរ និង​អារេ​ក្រឡា ត្រូវ​បាន​គាំទ្រ ។

ប៉ារ៉ាម៉ែត្រ​ត្រូវ​បាន​ហុច​ដោយ​ប្រើ​សេចក្តី​យោង ។ ដូច្នេះ ភាព​ផ្លាស់ប្តូរ​មួយ​នៃ​តម្លៃ​ទាំង​នេះ អាច​ធ្វើ​បាន​ជា​មូលដ្ឋាន ។ ទោះ​យ៉ាង​ណា វា​មិន​ត្រូវ​បាន​គាំទ្រ​ក្នុង LibreOffice Calc ទេ​ព្រោះ​វា​មិន​មាន​ន័យ​ក្នុង​សៀវភៅ​បញ្ជី ។

បណ្ណាល័យ​អាច​ត្រូវ​បាន​ផ្ទុក​ឡើង​វិញ​អំឡុងពេល​រត់ ហើយ​មាតិកា​របស់​ពួកវា​អាច​ត្រូវ​បាន​វិភាគ​ដោយ​អនុគមន៍​គ្រប់គ្រង ។ សម្រាប់​អនុគមន៍​នីមួយៗ ព័ត៌មាន​មាន​អំពី​ចំនួន និង​ប្រភេទ​ប៉ារ៉ាម៉ែត្រ ឈ្មោះ​អនុគមន៍​ខាង​ក្នុង និង​ខាង​ក្រៅ និង​លេខ​គ្រប់គ្រង ។

អនុគមន៍​ត្រូវ​បាន​ហៅ​ក្នុង​ពេល​ដំណាល​គ្នា និង​ត្រឡប់​លទ្ធផល​របស់​ពួក​វា​ភ្លាម​ៗ ។ អនុគមន៍​ពេល​ពិត (អនុគមន៍​អសមកាល) ក៏​អាច​ប្រើ​បាន​ដែរ ទោះ​យ៉ាង​ណា ពួក​វា​មិន​ត្រូវ​បាន​ពន្យល់​លម្អិត​ទេ ​ដោយ​សារ​តែ​ភាព​ស្មុគ្រស្មាញ​ពួក​វា ។

## ព័ត៌មាន​ទូទៅ​អំពី​ចំណុច​ប្រទាក់

ចំនួន​ប៉ារ៉ាម៉ែត្រ​ច្រើន​បំផុត​​ក្នុង​អនុគមន៍​បន្ថែម ដែល​បាន​ភ្ជាប់​នឹង LibreOffice Calc គឺ 16 ៖ មួយ​សម្រាប់​ត្រឡប់​តម្លៃ និង​ប៉ារ៉ាម៉ែត្រ 15 ទៀត​សម្រាប់​បញ្ចូល​ប៉ារ៉ាម៉ែត្រ ។

ប្រភេទ​ទិន្នន័យ​ត្រូវ​បាន​កំណត់​ដូច​ខាង​ក្រោម ៖

ប្រភេទ​ទិន្នន័យ | ការ​កំណត់​
--- | ---
CALLTYPE | ក្រោម Windows ៖ FAR PASCAL (_far _pascal) ផ្សេង​ទៀត ៖ លំនាំដើម (លំនាំដើម​បញ្ជាក់​លម្អិត​ដោយ​ប្រព័ន្ធ​ប្រតិបត្តិការ)
USHORT | ចំនួន​គត់ 2 បៃ​គ្មាន​សញ្ញា
DOUBLE | ទ្រង់ទ្រាយ​ដែល​អាស្រ័យ​លើ​វេទិកា 8 បៃ
Paramtype | អាស្រ័យ​វេទិកា ដូចជា int PTR_DOUBLE =0 អ្នក​ចង្អុល​ទៅ​ទ្វេ PTR_STRING =1 អ្នក​ចង្អុល​ទៅ​ខ្សែ​អក្សរ​ដែល​បញ្ចប់​ដោយ​សូន្យ ។ PTR_DOUBLE_ARR =2 អ្នក​ចង្អុល​ទៅ​អារេ​ទ្វេ​មួយ PTR_STRING_ARR =3 អ្នក​ចង្អុល​ទៅ​អារេ​ខ្សែ​អក្សរ​មួយ PTR_CELL_ARR =4 អ្នក​ចង្អុល​ទៅ​អារេ​ក្រឡា​មួយ NONE =5

## Shared LibraryDLL functions

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

For all Shared LibraryDLL 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()

ត្រឡប់​ចំនួន​អនុគមន៍ ដោយ​គ្មាន​អនុគមន៍​គ្រប់គ្រង​នៃ​ប៉ារ៉ាម៉ែត្រ​សេចក្តី​យោង ។ អនុគមន៍​នីមួយៗ​មាន​តម្លៃ​តែ​មួយ​គត់​ចន្លោះ 0 និង nCount-1 ។ លេខ​នេះ​នឹង​ត្រូវ​បាន​ត្រូវការ​សម្រាប់​អនុគមន៍ GetFunctionData និង​GetParameterDescription នៅ​ពេល​ក្រោយ ។

វាក្យ​សម្ពន្ធ

void CALLTYPE GetFunctionCount(USHORT& nCount)

ប៉ារ៉ាម៉ែត្រ

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 LibreOffice Calc, then nCount=5.

### GetFunctionData()

កំណត់​ព័ត៌មាន​សំខាន់ៗ​ទាំងអស់​អំពី​អនុគមន៍​រូបមន្ត​បន្ថែម ។

វាក្យ​សម្ពន្ធ

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

ប៉ារ៉ាម៉ែត្រ

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 Shared LibraryDLL. 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 និង pInternalName ជា​អារេ​តួ​អក្សរ ដែល​ត្រូវ​បាន​ប្រតិបត្តិ​ជាមួយ​ទំហំ 256 ក្នុង​ LibreOffice Calc ។

### GetParameterDescription()

ផ្តល់​នូវ​សេចក្តី​ពណ៌នា​សង្ខេប​នៃ​អនុគមន៍​រូបមន្ត​បន្ថែម និង​ប៉ារ៉ាម៉ែត្រ​របស់​វា ។​ ជា​ជម្រើស អនុគមន៍​នេះ​អាច​ត្រូវ​បាន​ប្រើ​ដើម្បី​បង្ហាញ​អនុគមន៍​មួយ និង​សេចក្តី​ពណ៌នា​ប៉ារ៉ាម៉ែត្រ​ក្នុង អ្នក​ជំនួយការ​អនុគមន៍ ។

វាក្យ​សម្ពន្ធ

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

ប៉ារ៉ាម៉ែត្រ

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 LibreOffice 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 LibreOffice Calc as char[256].

pName និង pDesc ជា​អារេ​តួ​អក្សរ បាន​ប្រតិបត្តិ​ក្នុង LibreOffice Calc ដែល​មាន​ទំហំ 256 ។ សូម​សម្គាល់​ថា ទំហំ​ដែល​មាន​ក្នុង អ្នក​ជំនួយការ​អនុគមន៍ ត្រូវ​បាន​កំណត់ និង​មិន​អាច​ប្រើ​បាន​ទាំង 256 តួអក្សរ​ទេ ។

## តំបន់​ក្រឡា

តារាង​ខាង​ក្រោម​មាន​ព័ត៌មាន ដែល​រចនា​សម្ព័ន្ធ​ទិន្នន័យ​ត្រូវ​តែ​ត្រូវ​បាន​ផ្តល់​ដោយ​ម៉ូឌុល​កម្មវិធី​ខាង​ក្រៅ ដើម្បី​ហុច​តំបន់​ក្រឡា ។ LibreOffice Calc សម្គាល់​អារេ​បី​ខុសៗ​គ្នា អាស្រ័យ​លើ​ប្រភេទ​ទិន្នន័យ ។

### អារេ​ទ្វេ

ជា​ប៉ារ៉ាម៉ែត្រ​មួយ តំបន់​ក្រឡា​មួយ​ដែល​មាន​តម្លៃ​ប្រភេទ​លេខ​/ទ្វេ អាច​ត្រូវ​បាន​ហុច ។ អារេ​ទ្វេ​ក្នុង LibreOffice Calc ត្រូវ​បាន​កំណត់​ដូច​ខាង​ក្រោម ៖

អុហ្វសិត | ឈ្មោះ | ការពិពណ៌នា
--- | --- | ---
0 | ជួរ​ឈរ១ | លេខ​ជួរ​ឈរ​នៅ​ជ្រុង​ខាង​លើ​ឆ្វេង​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
2 | ជួរ​ដេក១ | លេខ​ជួរ​ដេក​​នៅ​ជ្រុង​ខាង​លើ​ឆ្វេង​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
4 | តារាង១ | លេខ​តារាង​​នៅ​ជ្រុង​ខាង​លើ​ឆ្វេង​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
6 | ជួរ​ឈរ២ | លេខ​ជួរ​ឈរ​នៅ​ជ្រុង​ខាង​ក្រោម​ស្តាំ​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
8 | ជួរ​ដេក២ | លេខ​ជួរ​ដេក​នៅ​ជ្រុង​ខាង​ក្រោម​ស្តាំ​នៃ​តំបន់​ក្រឡា លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
10 | តារាង២ | លេខ​តារាង​​នៅ​ជ្រុង​ខាង​ក្រោម​​ស្តាំ​​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
12 | រាប់ | ចំនួន​ធាតុ​ខាង​ក្រោម ។ ក្រឡា​ទទេ​មិន​ត្រូវ​បាន​រាប់ ឬ​ហុច​ទេ ។
14 | ជួរ​ឈរ | លេខ​ជួរ​ឈរ​នៃ​ធាតុ ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
16 | ជួរ​ដេក | លេខ​ជួរ​ដេក​នៃ​ធាតុ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
18 | ថេប (Tab) | លេខ​តារាង​នៃ​ធាតុ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
20 | កំហុស | លេខ​កំហុស ដែល​តម្លៃ 0 ត្រូវ​បាន​កំណត់​ជា "គ្មាន​កំហុស" ។ បើ​ធាតុ​បាន​មក​ពី​ក្រឡា​រូបមន្ត​មួយ នោះ​តម្លៃ​កំហុស​នឹង​ត្រូវ​បាន​កំណត់​ដោយ​រូបមន្ត ។
22 | តម្លៃ | អថេរ IEEE 8 បៃ​នៃ​ប្រភេទ​ទ្វេ/ពិត
30 | ... | ធាតុ​បន្ទាប់

### អារេ​ខ្សែ​អក្សរ

តំបន់​ក្រឡា​មួយ​ដែល​មាន​តម្លៃ​នៃ​ប្រភេទ​ទិន្នន័យ អត្ថបទ ហើយ​ត្រូវ​បាន​ហុច​ជា​អារេ​ខ្សែ​អក្សរ​មួយ ។ អារេ​ខ្សែ​អក្សរ​មួយ​ក្នុង LibreOffice Calc ត្រូវ​បាន​​កំណត់​ដូច​ខាង​ក្រោម ៖

អុហ្វសិត | ឈ្មោះ | ការពិពណ៌នា
--- | --- | ---
0 | ជួរ​ឈរ១ | លេខ​ជួរ​ឈរ​នៅ​ជ្រុង​ខាង​លើ​ឆ្វេង​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
2 | ជួរ​ដេក១ | លេខ​ជួរ​ដេក​​នៅ​ជ្រុង​ខាង​លើ​ឆ្វេង​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
4 | តារាង១ | លេខ​តារាង​​នៅ​ជ្រុង​ខាង​លើ​ឆ្វេង​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
6 | ជួរ​ឈរ២ | លេខ​ជួរ​ឈរ​នៅ​ជ្រុង​ខាង​ក្រោម​ស្តាំ​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
8 | ជួរ​ដេក២ | លេខ​ជួរ​ដេក​នៅ​ជ្រុង​ខាង​ក្រោម​ស្តាំ​នៃ​តំបន់​ក្រឡា លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
10 | តារាង២ | លេខ​តារាង​​នៅ​ជ្រុង​ខាង​ក្រោម​​ស្តាំ​​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
12 | រាប់ | ចំនួន​ធាតុ​ខាង​ក្រោម ។ ក្រឡា​ទទេ​មិន​ត្រូវ​បាន​រាប់ ឬ​ហុច​ទេ ។
14 | ជួរ​ឈរ | លេខ​ជួរ​ឈរ​នៃ​ធាតុ ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
16 | ជួរ​ដេក | លេខ​ជួរ​ដេក​នៃ​ធាតុ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
18 | ថេប (Tab) | លេខ​តារាង​នៃ​ធាតុ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
20 | កំហុស | លេខ​កំហុស ដែល​តម្លៃ 0 ត្រូវ​បាន​កំណត់​ជា "គ្មាន​កំហុស" ។ បើ​ធាតុ​បាន​មក​ពី​ក្រឡា​រូបមន្ត​មួយ នោះ​តម្លៃ​កំហុស​នឹង​ត្រូវ​បាន​កំណត់​ដោយ​រូបមន្ត ។
22 | Len | ប្រវែង​នៃ​ខ្សែ​អក្សរ​ខាង​ក្រោម រួម​ទាំង​បៃ​សូន្យ​ដែល​នៅ​ជិត ។ បើ​ប្រវែង​រួម​ទាំង​បៃ​សូន្យ​ដែល​នៅ​ជិត​ស្មើ​នឹង​តម្លៃ​សេស នោះ​បៃ​សូន្យ​ទីពីរ​ត្រូវ​បាន​បន្ថែម​ទៅ​ខ្សែ​អក្សរ ដូច្នេះ​ទទួល​បាន​តម្លៃ​គូ ។ ដូច្នេះ Len ​ត្រូវ​បាន​គណនា​ដោយ​ប្រើ ((StrLen+2)&~1) ។
24 | ខ្សែ​អក្សរ | ខ្សែ​អក្សរ​ដែល​មាន​បៃ​សូន្យ​នៅ​ជិត
24+Len | ... | ធាតុ​បន្ទាប់

### អារេ​ក្រឡា

អារេ​ក្រឡា​ត្រូវ​បាន​ប្រើ​សម្រាប់​ហៅ​តំបន់​ក្រឡា​ដែល​មាន​អត្ថបទ ព្រម​ទាំង​លេខ ។​ អារេ​ក្រឡា​មួយ​ក្នុង LibreOffice Calc ត្រូវ​បាន​កំណត់​ដូច​ខាង​ក្រោម ៖

អុហ្វសិត | ឈ្មោះ | ការពិពណ៌នា
--- | --- | ---
0 | ជួរ​ឈរ១ | លេខ​ជួរ​ឈរ​នៅ​ជ្រុង​ខាង​លើ​ឆ្វេង​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
2 | ជួរ​ដេក១ | លេខ​ជួរ​ដេក​​នៅ​ជ្រុង​ខាង​លើ​ឆ្វេង​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
4 | តារាង១ | លេខ​តារាង​​នៅ​ជ្រុង​ខាង​លើ​ឆ្វេង​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
6 | ជួរ​ឈរ២ | លេខ​ជួរ​ឈរ​នៅ​ជ្រុង​ខាង​ក្រោម​ស្តាំ​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
8 | ជួរ​ដេក២ | លេខ​ជួរ​ដេក​នៅ​ជ្រុង​ខាង​ក្រោម​ស្តាំ​នៃ​តំបន់​ក្រឡា លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
10 | តារាង២ | លេខ​តារាង​​នៅ​ជ្រុង​ខាង​ក្រោម​​ស្តាំ​​នៃ​តំបន់​ក្រឡា ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
12 | រាប់ | ចំនួន​ធាតុ​ខាង​ក្រោម ។ ក្រឡា​ទទេ​មិន​ត្រូវ​បាន​រាប់ ឬ​ហុច​ទេ ។
14 | ជួរ​ឈរ | លេខ​ជួរ​ឈរ​នៃ​ធាតុ ។ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
16 | ជួរ​ដេក | លេខ​ជួរ​ដេក​នៃ​ធាតុ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
18 | ថេប (Tab) | លេខ​តារាង​នៃ​ធាតុ លេខរៀង​ចាប់ផ្តើម​ពី 0 ។
20 | កំហុស | លេខ​កំហុស ដែល​តម្លៃ 0 ត្រូវ​បាន​កំណត់​ជា "គ្មាន​កំហុស" ។ បើ​ធាតុ​បាន​មក​ពី​ក្រឡា​រូបមន្ត​មួយ នោះ​តម្លៃ​កំហុស​នឹង​ត្រូវ​បាន​កំណត់​ដោយ​រូបមន្ត ។
22 | ប្រភេទ | ប្រភេទ​នៃ​មាតិកា​ក្រឡា 0 == ទ្វេ 1 == ខ្សែ​អក្សរ
24 | តម្លៃ ឬ Len | បើ​ប្រភេទ == 0 ៖ អថេរ IEEE 8 បៃ នៃ​ប្រភេទ ទ្វេ/​ពិត បើ​ ប្រភេទ == 1 ៖ ប្រវែង​នៃ​ខ្សែ​អក្សរ​​ខាង​ក្រោម រួម​ទាំង​បៃ​សូន្យ​ដែល​នៅ​ជិត ។ បើ​​ប្រវែង​រួម​មាន​បៃ​សូន្យ​ដែល​នៅ​ជិត​ស្មើ​នឹង​តម្លៃ​សេស​មួយ នោះ​បៃ​សូន្យ​ទីពីរ​ត្រូវ​បាន​បន្ថែម​ទៅ​ខ្សែ​អក្សរ ដូច្នេះ​ទទួល​បាន​តម្លៃ​គូ ។ ដូច្នេះ Len ត្រូវ​បាន​គណនា​ដោយ​ប្រើ ((StrLen+2)&~1) ។
26 បើ​ប្រភេទ==1 | ខ្សែ​អក្សរ | បើ ប្រភេទ == 1 ៖ ខ្សែ​អក្សរ​ដែល​មាន​បៃ​សូន្យ​នៅ​ជិត
32 ឬ 26+Len | ... | ធាតុ​បន្ទាប់