การใช้ Array ร่วมกับ Function

เพื่อทดสอบการใช้ VFP ร่วมกับตัวแปรประเภท Array ผมจึงเขียนคำสั่งดังข้างล่างนี้เพื่อทดสอบการใช้งาน Array ทั้งส่งข้อมูลเข้าไปใน Function และการรับค่า Array ที่คืนจาก Function ออกมาใช้งานต่อ แยกเป็นส่วนๆได้ดังนี้

* สร้างตัวแปร myarray ให้เป็น array แล้วกำหนดค่าเป็น A,B ตามลำดับ
DIMENSION myarray[2]
myarray[1]="A"
myarray[2]="B"

* ทดลองพิมพ์ออกมาดูว่าเก็บค่าอยู่จริงมั๊ย
?"test print array value"
for i=1 to alen(myarray)
 ?i,myarray[i]
next i

* ส่งค่าไปใช้ในฟังก์ชั้น
do print_r with myarray

* การรับค่า array คืนจากฟังก์ชั่น
dime pointer[5]  && ต้องประกาศตัวแปร array ที่จะเป็นตัว contrainer (ส่งค่าไปและรับค่ากลับ) ขึ้นมาก่อน
pointer = returnarray(@pointer) && จากนั้นส่ง pinter ของตัวแปร array ที่จะเป็นตัว contrainer ไปยังฟังก์ชั่น
* ค่าที่รับมาแบบ pointer จะเป็น array หรือไม่ก็ได้ แต่กรณีนี้เป็น array เพราะฟังก์ชั่นคืนค่า pointer ของตัวแปร array กลับมา
* ทดลองพิมพ์ค่าออกมาดูว่าเก็บค่าอะไรไว้
do print_r with pointer
return

* ฟังก์ชั่นทดสอบการรับตัวแปร array มาใช้
function print_r
 parameter internal_array
 ?"Function 'print_r' - พิมพ์ค่าใน array ออกมา"
 for i=1 to alen(internal_array)
  ?i,internal_array[i]
 next i
endfunc

* ฟังก์ชั่นทดสอบการคืนค่า pinter ที่ชี้ตัวแปร array กลับไป
* หมายเหตุ จุดสำคัญของเรื่องคือ
* 1. ต้องประกาศตัวแปร array ขึ้นมาก่อนจะเรียก function เพื่อเป็น contrainer
* 2. ต้องส่ง pointer ของตัวแปร array ที่ประกาศนั้นมาด้วยขณะเรียก function แม้ว่าไม่ได้มีค่าอะไรเป็น input
* 3. ปกติฟังก์ชั่นจะคืนค่ากลับได้ค่าเดียว ดังนั้นเมื่อจะคืนหลายๆค่าเราจึงคืนค่าเป็น pointer ของ array
* 4. ใช้ @นำหน้าชื่อตัวแปรสำหรับการส่งค่า pointer
function returnarray
parameter pointer
* เราใช้ตัวแปรชื้อ pointer ได้เลยเพราะสร้างมาตั้งแต่ก่อนเรียกใช้ฟังก์ชั่น
* เมื่อตัวชี้มันชี้ไปที่ตัวแปรที่ประกาศไว้แล้ว และตัวแปรนั้นเป็น array จึงใช้เสมือน array ปกติ
 pointer[1]="A"
 pointer[2]="B"
 pointer[3]="C"
 pointer[4]="D"
 pointer[5]="E"
 return @pointer
endfunc

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เมื่อ VFP Table พัง

VFP SQL UPDATE ปรับปรุงค่าในฟิลด์ด้วยค่าจากตารางอื่น