This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
tutorial:procedureandfunction [2019/01/04 15:16] admin |
tutorial:procedureandfunction [2019/01/04 16:03] admin [By Reference] |
||
---|---|---|---|
Line 124: | Line 124: | ||
การส่งผ่าน Parameters เข้าไปใน Procedure/Function มี 2 แบบ คือ By Value และ By Reference | การส่งผ่าน Parameters เข้าไปใน Procedure/Function มี 2 แบบ คือ By Value และ By Reference | ||
* **By Value** คือ ส่งเฉพาะค่าของ Parameter เข้าไปใน Procedure/Function โดยหากมีการเปลี่ยนแปลงค่าใดๆใน Procedure/Function นั้น จะ__**ไม่เปลี่ยนแปลง**__ต่อค่าที่แท้จริงของ Parameter สำหรับการรับค่าแบบปกติ | * **By Value** คือ ส่งเฉพาะค่าของ Parameter เข้าไปใน Procedure/Function โดยหากมีการเปลี่ยนแปลงค่าใดๆใน Procedure/Function นั้น จะ__**ไม่เปลี่ยนแปลง**__ต่อค่าที่แท้จริงของ Parameter สำหรับการรับค่าแบบปกติ | ||
- | * **By Reference** คือ ส่งเฉพาะค่าของ Parameter เข้าไปใน Procedure/Function โดยหากมีการเปลี่ยนแปลงค่าใดๆใน Procedure/Function นั้น จะ__**เปลี่ยนแปลง**__ค่าที่แท้จริงของ Parameter ด้วย | + | * **By Reference** คือ หากมีการเปลี่ยนแปลงค่าใดๆของ Parameter ใน Procedure/Function นั้น จะ__**เปลี่ยนแปลง**__ค่าที่แท้จริงของ Parameter ด้วย |
====By Value==== | ====By Value==== | ||
Line 135: | Line 135: | ||
writeln('X = ',X); | writeln('X = ',X); | ||
end; | end; | ||
- | </sxh> | + | </sxh> \\ |
- | + | ||
- | อย่างไรก็ตาม เราสามารถระบุ const หน้า Parameter ได้เช่นกัน | + | |
- | + | ||
- | <sxh delphi;> | + | |
- | procedure DoItA(const X:integer); | + | |
- | begin | + | |
- | X:=10; | + | |
- | writeln('X = ',X); | + | |
- | end; | + | |
- | </sxh> | + | |
- | \\ | + | |
====By Reference==== | ====By Reference==== | ||
Line 158: | Line 147: | ||
end; | end; | ||
</sxh> | </sxh> | ||
+ | |||
+ | |||
+ | <hidden Example-6: Passing Parameters (By Value, By Reference)> | ||
+ | <sxh delphi;> | ||
+ | program Passing_Param; | ||
+ | |||
+ | var A,B:integer; | ||
+ | |||
+ | procedure DoItA(X:integer); //By Value | ||
+ | begin | ||
+ | X:=100; | ||
+ | writeln('DoItA, X = ',X); | ||
+ | end; | ||
+ | |||
+ | procedure DoItB(var X:integer); //By Reference | ||
+ | begin | ||
+ | X:=200; | ||
+ | writeln('DoItB, X = ',X); | ||
+ | end; | ||
+ | |||
+ | begin | ||
+ | A:=1; | ||
+ | B:=2; | ||
+ | |||
+ | writeln('A = ',A); | ||
+ | writeln('B = ',B); | ||
+ | |||
+ | DoItA(A); | ||
+ | DoItB(B); | ||
+ | |||
+ | writeln('A = ',A); | ||
+ | writeln('B = ',B); | ||
+ | |||
+ | readln(); | ||
+ | end. | ||
+ | </sxh> | ||
+ | |||
+ | Compiled Results: | ||
+ | |||
+ | A = 1 | ||
+ | B = 2 | ||
+ | DoItA, X = 100 | ||
+ | DoItB, X = 200 | ||
+ | A = 1 | ||
+ | B = 200 | ||
+ | | ||
+ | </hidden> |