This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
tutorial:variableanddatatype [2019/01/11 11:32] admin |
tutorial:variableanddatatype [2019/01/11 14:14] (current) admin [Enumerated Type] |
||
---|---|---|---|
Line 67: | Line 67: | ||
=====User-Define Type===== | =====User-Define Type===== | ||
=====Enumerated Type===== | =====Enumerated Type===== | ||
- | คือ Data Type ที่เรากำหนดชื่อได้เอง ซึ่งชื่อที่กำหนดขึ้นต้องเป็นไปตามกฎการตั้งชื่อตัวแปร ไม่ใช่ชื่อในแบบ string โดยสิ่งที่สำคัญสำหรับ Data Type ประเภทนี้ คือ ลำดับตัวเลข | + | คือ Data Type ที่เรากำหนดชื่อได้เอง ซึ่งชื่อที่กำหนดขึ้นต้องเป็นไปตามกฎการตั้งชื่อตัวแปร ไม่ใช่ชื่อในแบบ string โดยสิ่งที่สำคัญสำหรับ Data Type ประเภทนี้ คือ การมีลำดับตัวเลขเป็นของตัวเอง ทำให้ Enumerated Type ถูกนำมาเปรียบเทียบกันด้วยเครื่องหมาย =,>,< ได้เหมือนๆกับตัวเลขทั่วไป |
การประกาศ Enumerated Type ทำได้ดังนี้ | การประกาศ Enumerated Type ทำได้ดังนี้ | ||
Line 73: | Line 74: | ||
Type | Type | ||
TDay = (Mon,Tue,Wed,Thu,Fri,Sat,Sun); | TDay = (Mon,Tue,Wed,Thu,Fri,Sat,Sun); | ||
- | TDirection = (Right = 1,Left,Front,Back); | + | TDirection = (North = 2, East, South = 8, West); |
- | </sxh> | | + | </sxh> |
+ | |||
+ | การเรียกใช้งาน | ||
+ | |||
+ | <sxh delphi;> | ||
+ | VAR | ||
+ | ToDay:TDay; | ||
+ | Direction:TDirection; | ||
+ | BEGIN | ||
+ | Today:=Wed; | ||
+ | Direction:=EAst; //case insensitive | ||
+ | |||
+ | if Today < Sat then | ||
+ | writeln('Today is not holliday') | ||
+ | else | ||
+ | writeln('Today is holliday'); | ||
+ | |||
+ | writeln('Your direction number is : ',ord(Direction)); | ||
+ | readln; | ||
+ | END. | ||
+ | </sxh> | ||
+ | |||
+ | เราสามารถหาเลขลำดับของ Enumerated Variable ได้ โดยใช้ฟังก์ชั่น Ord() จากตัวอย่างข้างบน หากไม่มีการกำหนดลำดับให้ ลำดับก็จะเริ่มจาก 0 เสมอ จะได้ลำดับของแต่ละวันใน TDay ดังนี้ | ||
+ | |||
+ | Mon=0, Tue=1, Wed=2, Thu=3, Fri=4, Sat=5, Sun=6 | ||
+ | |||
+ | สำหรับ Enumerated Variable ที่มีการกำหนดลำดับ ก็จะได้ลำดับตามที่กำหนดมา แต่สำหรบตัวที่ไม่ได้กำหนด จะนำลำดับตัวก่อนหน้ามา +1 จากตัวอย่าง TDirection จะได้ลำดับดังนี้ | ||
+ | |||
+ | North = 2, East = 3, South = 8, West = 9 | ||
+ | จากตัวอย่างข้างบน บรรทัดที่ 6 จะสังเกตว่า การใส่ชื่อเป็น Case Insensitive เหมือนกันกับการตั้งชื่อตัวแปรในภาษา Pascal ดังนั้น East, EAST, EAst, eAsT เหล่านี้ ย่อมเป็นตัวเดียวกัน |