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 16:03] admin [By Reference] |
tutorial:procedureandfunction [2019/01/04 21:15] admin [Forward Declaration] |
||
---|---|---|---|
Line 194: | Line 194: | ||
| | ||
</hidden> | </hidden> | ||
+ | \\ | ||
+ | |||
+ | =====Forward Declaration===== | ||
+ | คือ การประกาศ Procedure/Function ล่วงหน้าเพื่อให้ทุก Procedure/Function สามารถเรียกใช้งานกันและกันได้หมด สาเหตุที่ต้องทำแบบนี้เพราะว่า โดยปกตินั้น Compiler จะอ่าน source code จาก บนลงล่าง ดังนั้น หากมี Procedure/Function ตัวใดตัวหนึ่งเรียกใช้งาน Procedure/Function ตัวอื่นที่ยังไม่ได้ประกาศ จะทำให้เกิด Error \\ | ||
+ | |||
+ | รูปแบบการประกาศสำหรับ Program จะมีคำว่า forward ต่อท้ายดังนี้ | ||
+ | |||
+ | Procedure ProcedureName; forward; | ||
+ | |||
+ | |||
+ | <hidden Example-7: Forward Declarations on Simple Program> | ||
+ | __**อธิบาย**__ - ตัวอย่างนี้ มีการประกาศโปรแกรมย่อย ชื่อ Second ล่วงหน้าในบรรทัดที่ 4 เพื่อให้โปรแกรมย่อยที่ชื่อ First ได้รู้จัก Second ก่อน แน่นอนว่าหากตัด code ในบรรทัดที่ 4 ออกไปแล้ว สิ่งที่จะตามมาคือ เมื่อ compiler อ่านจนมาถึง First ก็จะฟ้องทันทีว่าไม่สามารถหา Second เจอ | ||
+ | |||
+ | <sxh delphi;highlight: [4]> | ||
+ | program FWD_Declaration; | ||
+ | |||
+ | //Forward declarations | ||
+ | procedure Second; forward; | ||
+ | |||
+ | //Implementations | ||
+ | procedure First; | ||
+ | begin | ||
+ | writeln('Hello First'); | ||
+ | Second; | ||
+ | end; | ||
+ | |||
+ | procedure Second; | ||
+ | begin | ||
+ | writeln('Hello Second'); | ||
+ | end; | ||
+ | |||
+ | begin | ||
+ | First; | ||
+ | readln(); | ||
+ | end. | ||
+ | </sxh> | ||
+ | |||
+ | Compiled Results: | ||
+ | |||
+ | Hello First | ||
+ | Hello Second | ||
+ | | ||
+ | </hidden> | ||
+ | \\ |