User Tools

Site Tools


tutorial:procedureandfunction

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
tutorial:procedureandfunction [2019/01/04 21:11]
admin
tutorial:procedureandfunction [2019/01/06 16:53]
admin
Line 84: Line 84:
 \\ \\ \\ \\
  
-=====การประกาศ Procedure/​Function===== +=====การประกาศและการเรียกใช้ ​Procedure/​Function===== 
-หลังจากการประกาศ uses แล้ว Procedure/​Function ที่เป็น Global Scope สามารถประกาศไว้ ณ ส่วนไหนของโปรแกรมก็ได้ แต่โดยปกติแล้ว ผมขอแนะนำให้ประกาศทีหลังสุด (หลังจากประกาศ var) แต่ถ้าหากเป็น Function/​Procedure ที่มาจาก Shared Library ผมขอแนะนำให้วางไว้แรกสุด (ต่อจากการประกาศ uses)+หลังจากการประกาศ uses แล้ว Procedure/​Function ที่เป็น Global Scope สามารถประกาศไว้ ณ ส่วนไหนของโปรแกรมก็ได้ แต่โดยปกติแล้ว ผมขอแนะนำให้ประกาศทีหลังสุด (หลังจากประกาศ var) แต่ถ้าหากเป็น Function/​Procedure ที่มาจาก Shared Library ผมขอแนะนำให้วางไว้แรกสุด (ต่อจากการประกาศ uses) \\ 
 + 
 +การเรียกใช้ Procedure นั้นง่ายมาก เพียงแค่ใส่ชื่อ Procedure นั้นๆ (พร้อมกับ Input Parameters ถ้ามี) ได้เลย ยกตัวอย่างเช่น 
 + 
 +<hidden Example-5: Calling Procedures>​ 
 +<sxh delphi>​ 
 +Program SayHellow;​ 
 + 
 +procedure HelloWorld;​ 
 +begin 
 +  writeln('​HelloWorld'​);​ 
 +end; 
 + 
 +procedure SayHello(sName:​string);​ 
 +begin 
 +  writeln('​Hello'​+ sName); 
 +end; 
 + 
 +Begin 
 +  HelloWorld; //Calling HelloWorld 
 +  SayHello('​Mr. Smith'​);​ //Calling Procedure 
 +End. 
 +</​sxh>​ 
 +</​hidden>​
 \\ \\
 +
 +สำหรับการเรียกใช้ Function นั้นก็คล้ายกับการเรียกใช้ Procedure แต่มีข้อแตกต่างอีกอย่างหนึ่ง คือ Function ให้ค่า Output ด้วย ​
 +\\ \\
 +
 =====Nested Function/​Procedure===== =====Nested Function/​Procedure=====
 คือ Function/​Procedure ที่เป็น Local Scope ซ้อนอยู่ใน Function/​Procedure อื่น\\ คือ Function/​Procedure ที่เป็น Local Scope ซ้อนอยู่ใน Function/​Procedure อื่น\\
-<hidden Example-5: Nested Function>​+<hidden Example-6: Nested Function>​
 <sxh delphi;​highlight:​ [4-10]> <sxh delphi;​highlight:​ [4-10]>
 procedure SolvePolynomial(A,​B,​C:​real);​ procedure SolvePolynomial(A,​B,​C:​real);​
Line 149: Line 176:
  
  
-<hidden Example-6: Passing Parameters (By Value, By Reference)>​+<hidden Example-7: Passing Parameters (By Value, By Reference)>​
 <sxh delphi;> <sxh delphi;>
 program Passing_Param;​ program Passing_Param;​
Line 201: Line 228:
 รูปแบบการประกาศสำหรับ Program จะมีคำว่า forward ต่อท้ายดังนี้ รูปแบบการประกาศสำหรับ Program จะมีคำว่า forward ต่อท้ายดังนี้
  
-  Procedure ​ProcedureName; forward;+  Procedure ​DoSomething; forward;
  
- +สำหรับ Unit นน FPC บังคับใหต้องมีการทำ forward declaration ทุั้งก่อนเสมอ เพราะ unit อื่นหรือ program ที่มีการ uses unit ดังกล่วนั้น จะเข้าถึง Procedure/​Function ได้าะสวนที่เป็น interface เท่านั้น ไม่สามารถเข้าถึงส่วน implementation โดยตรงได้ ดังนั้นจึงต้งประกาศล่วงหน้านตำแน่งใตคำว่า interface เสมอ ​ดยการปราศจะไม่คำวา forward ต่อายเหมือนของ program อีก ดังตัวอย่างต่อไปี้
-<hidden Example-7: Forward Declarations on Simple Program>​ +
-__**อธิาย**__ - ตวอย่าง้ มีการประาศโปรมย่อย ชื่อ ​Second ​ล่วงหน้า เพ่อให้โปรอยที่ชื่อ ​First ไดรู้จัก Second ​ก่อน ​+
  
 <sxh delphi;> <sxh delphi;>
 +unit Unit1;
 +
 +interface
 +//Forward declaration
 +procedure First;
 +procedure Second;
 +
 +implementation
 +
 +procedure First;
 +begin
 +  writeln('​Hello First'​);​
 +  Second;
 +end;
 +
 +procedure Second;
 +begin
 +  writeln('​Hello Second'​);​
 +end;
 +end. 
 +</​sxh>​ \\
 +
 +
 +<hidden Example-8: Forward Declarations on Simple Program>
 +__**อธิบาย**__ - ตัวอย่างนี้ มีการประกาศโปรแกรมย่อย ชื่อ Second ล่วงหน้าในบรรทัดที่ 4 เพื่อให้โปรแกรมย่อยที่ชื่อ First ได้รู้จัก Second ก่อน แน่นอนว่าหากตัด code ในบรรทัดที่ 4 ออกไปแล้ว สิ่งที่จะตามมาคือ เมื่อ compiler อ่านจนมาถึง First ก็จะฟ้องทันทีว่าไม่สามารถหา Second เจอ ​
 +
 +<sxh delphi;​highlight:​ [4]>
 program FWD_Declaration;​ program FWD_Declaration;​
  
tutorial/procedureandfunction.txt · Last modified: 2019/01/06 16:54 by admin