Tuesday, January 06, 2009 Login      Register

 Article Details

มารู้จัก ประเภทข้อมูล ของ X++ Axapta 3.0 (ตอนที่ 1)

โครงสร้างทางด้าน Programming เราจะต้องรู้ ประเภทข้อมูลเบื้องต้นที่ X++

สนับสนุน แบ่งได้เป็น 2ประเภท

 

ประเภทขั้นพื้นฐาน
Boolean Booleans เป็น ค่า false and true.
Integer ตัวเลขจำนวนเต็ม
Real ตัวเลขจำนวนจริง
Date เก็บวันที่ (วัน เดือน ปี)
TimeOfDay เก็บเวลา(ชั่วโมง:นาที:วินาที)
String ชุดตัวอักษร
Enum ใช้เก็บข้อมูลตัวเลขโดยใช้ word แทน
 

ประเภทมีโครงสร้างซับซ้อน
 

Arrays array คือ ชุดรายการข้อมูลที่เป็นประเภทเดียวกัน โดยมี เลขindex ใช้ในการอ้างถึงข้อมูล
Containers container คือ ชุดรายการข้อมูลที่โดยประเภทข้อมูลอาจจะไม่เป็นประเภทเดียวกัน (มีความยืดหยุ่น)
Classes class จะถูกกำหนดด้วยตัวแปร และ methods จะต้อง instances (objects) โดย class
Tables ทุก tables ที่ถูกกำหนดใน Axapta สามารถควบคุมได้โดย class

 
Conversion of data types
แนวคิด, กฎ และ ขบวนการในการแปลง ระหว่างประเภทของข้อมูล แบบอัตโนมัติ
Automatic conversion
ค่า เริ่มต้น (Default values) ของตัวแปร ใน X++ โชว์ได้ดังนี้:
 

Data type ค่า เริ่มต้น Internal representation
Boolean false Short Number
Integer 0 Long Number
Real 0.0 BCD Number
Date Null Date
String empty List of characters
Enums 0 (first entry) Short number

 
โดยปกติจะเปลี่ยนไปเป็นรูปแบบที่รองรับรูปแบบข้อมูลได้มากขึ้น จาก short เป็น long จาก long เป็น BCD และ เรามาดูกฎการแปลงข้อมูลแบบพื้นฐาน จาก Operator ต่าง ๆ

Operator รายเอียด
+ - * ถ้าหนึ่งในนั้นในที่ operands คือ real ผลที่ได้จะถูกแปลงเป็น ข้อมูลประเภท real
ถ้าระหว่าง integers, boolean, หรือ enum ผลที่ได้คือ integer, boolean, หรือ enum ตามลำดับ
โดย boolean ยกระดับเป็น enum และ enum ยกระดับเป็น integer
/ สัญลักษณ์ “/” คือ หาร, จะทำการแลงข้อมูลเป็น real และผลลัพธ์ ที่ได้ก็เป็น real
MOD DIV << >> สัญลักษณ์ MOD และ DIV,>>,<< ใช้กับ ข้อมูลประเภท Integer และ จะเปลี่ยนเป็น integer ก่อน ผลลัพธ์ ที่ได้ก็เป็น integer.

 
ตัวอย่างการใช้งาน
 

No รูปแบบ ประเภทข้อมูลด้านซ้าย แปลงก่อนOperands With numbers Result
1 i = b + b integer boolean, boolean i = false + false 0
2 i = r + b integer real, real i = 33.3 + true 34
3 b = i + r boolean real, real b = 10 + 33.3 undefined
4 b = i + r boolean real, real b = 0 + 1 true
5 r = i + b real integer, integer r = 100 + false 100.0
6 r = i + b real integer, integer r = 100 + true 101.0
7 i = r MOD b integer integer, integer i = 33.3 MOD true 0
8 r = i DIV i real no conversion r = 100 DIV 5 20
9 d = d + i date date, date d = 1\1\1998 + 30 31\1\1998
10 i = d + i integer date, date i = 1\1\1998 + 1 compile error
11 d = d + d date date, date d = 1\1\1998+1\1\1998 compile error
12 s = s + s string string, string s = “a” + “b” “ab”
13 i = s + i integer      

 
จากตัวอย่างที่ 3,ถ้าผลที่ได้คือ 0 ,1 คือ false และ true (1) boolean ดังนั้นไม่สามารถระบุบได้
รายการที่ ไม่แปลงอัตโนมัติ
dates และ strings ไม่ถูกแปลงอัตโนมัติ แต่ integers สามารถ แปลงเป็น dates คุณสามารถใช้ แปลงโดย functions built-in ของ Axapta ได้
 
Boolean
Boolean คือข้อมูลประเภท โลจิก มี 2 สถานะคือ false หรือ true. ตัวแปร Boolean สามารถ ใช้เป็น flags ในโปรแกรม false คือ 0 true คือ 1 โดยแท้จริงแล้ว Boolean ก็คือ integerดังนั้นคุณสามารถ ใช้ integer เป็น Boolean. ถ้าค่าไม่เท่ากับ 0 คือ true โดยคำสงวนคือ true และ false
การประกาศตัวแปล สำหรับ
Boolean
ทุกตัวแปลจะต้องมีการประกาศก่อนนำไปใช้งาน รูปแบบการประกาศ
 

boolean declaration = boolean ชื่อตัวแปล { , ตัวแปร } ;
ชื่อตัวแปร = identifier [ option ]
Option = Arrayoptions | initialization

ตัวอย่างการประกาศ

boolean b; // ประกาศ boolean แบบง่าย.
boolean b1,b2; // ประกาศ boolean แบบหลายตัว
boolean b3 = true; // ประกาศ boolean แบบระบุบค่า
boolean b4[]; // การประกาศ boolean แบบ array

การใช้วิธีใช้
ปกติเราใช้ booleans ในการตัดสินใจหรือ ลอจิค ในการตัดสินใจ
ตัวอย่างการใช้งาน

void main()
{
Boolean exprValue; //ประกาศตัวแปร
exprValue = (7*6 == 42); //กำหนดค่า
if (exprValue) //ถ้าตัวแปร เป็นจริง จะทำการ Print “OK”
print “OK”; //“OK” is printed in a window
}

7*6 เท่ากับ 42 ดังนั้นค่าเป็น จะทำการ พิมพ์ “OK” ที่หน้าจอ.
ข้อมูลทั่วไป

Keyword Boolean
ขนาดของข้อมูล Byte
ขอบเขตข้อมูล false (0) and true (1)
ค่าเริ่มต้น False
Implicit conversions แปลงอัตโนมัติ เป็น integer, date หรือreal
Explicit conversions -

 
Integer
Integers คือ จำนวนเต