เมื่อพูดถึงการคำนวณการแสดงออกทางคณิตศาสตร์คนที่แตกต่างกันมีวิธีการที่แตกต่างกัน บางคนใช้วิธีการวิเคราะห์นิพจน์ หากมีข้อผิดพลาดในนิพจน์กล่องโต้ตอบสามารถปรากฏขึ้นเพื่อระบุข้อผิดพลาดที่เกี่ยวข้อง โปรแกรมนี้ใช้คำสั่ง SQL มาตรฐานซึ่งสนับสนุนการดำเนินงานจำนวนมากเช่น: การลบการคูณการแบ่งแยกและการหาร; นอกจากนี้ยังมีการดำเนินการสตริง แต่นั่นไม่สมเหตุสมผล เนื่องจากโปรแกรมนี้เป็นไปตามวัตถุประสงค์ที่กล่าวถึงข้างต้นจึงไม่มีข้อ จำกัด เกี่ยวกับสิ่งเหล่านี้เพื่อนที่สนใจสามารถตรวจสอบไวยากรณ์ของนิพจน์ล่วงหน้าและส่งมอบให้กับโปรแกรมนี้เพื่อการคำนวณ
-
สงวนลิขสิทธิ์
โครงการ: การคำนวณการแสดงออกทางคณิตศาสตร์
ผู้แต่ง: huang tao [email protected]
วัตถุประสงค์: เรียนรู้วิธีการใช้คลาสยกเว้น
-
หน่วย ucalcexpr;
ส่วนต่อประสาน
ใช้
Windows, ข้อความ, sysutils, ตัวแปร, คลาส, กราฟิก, การควบคุม, รูปแบบ,
กล่องโต้ตอบ, stdctrls, db, ADODB;
พิมพ์
tfrmcalc = คลาส (tform)
ปุ่ม 1: tbutton;
Edit1: Tedit;
ขั้นตอน button1click (ผู้ส่ง: tobject);
ขั้นตอน EDIT1KEYPRESS (ผู้ส่ง: TOBJECT; VAR KEY: CHAR);
ส่วนตัว
{ประกาศส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
ฟังก์ชั่น calcexpr (expr: string): string;
วาจา
frmcalc: tfrmcalc;
การดำเนินการ
{$ r *.dfm}
// นี่คือแกนกลางของโปรแกรมนี้และขึ้นอยู่กับการคำนวณนิพจน์
ฟังก์ชั่น calcexpr (expr: string): สตริง;
VAR QUERY: Tadodataset;
เริ่ม
Qury: = tadodataset.create (ไม่มี);
พยายาม
Qury.ConnectionString: = 'ผู้ให้บริการ = msdasql.1; ข้อมูลความปลอดภัยคงที่ = false;'
'แหล่งข้อมูล = ไฟล์ dBase';
Qury.CommandText: = 'เลือก' + expr + 'เป็นผลลัพธ์';
Qury.open;
ผลลัพธ์: = expr + '=' + Qury.fieldByName ('ผลลัพธ์'). assTring;
ในที่สุด
Query.free;
จบ;
จบ;
ขั้นตอน tfrmcalc.button1click (ผู้ส่ง: tobject);
เริ่ม
พยายาม
edit1.Text: = calcexpr (edit1.text);
ยกเว้น
บน H: ข้อยกเว้นเริ่มต้นขึ้น
Showmessage (H.Message);
จบ;
จบ;
จบ;
โพรซีเดอร์ tfrmcalc.edit1keypress (ผู้ส่ง: tobject; var key: char);
เริ่ม
ถ้า key = #13 แล้ว button1click (ตัวเอง);
จบ;
จบ.
สรุป: จากนี้เราจะเห็นว่ามีสองวิธีในการจับข้อยกเว้น สองวิธีในการจับข้อยกเว้นนั้นแตกต่างกันและแต่ละวิธีมีการใช้งานของตัวเอง
ลอง ... ยกเว้น ... โดยทั่วไปจะใช้โดยทั่วไปเมื่อเราจำเป็นต้องจับข้อผิดพลาดและทำพรอมต์ที่สอดคล้องกันหลังจากเรียกใช้วิธีการบางอย่าง ตัวอย่างเช่นเมื่อเรียกฟังก์ชั่นที่คำนวณนิพจน์ในโปรแกรมข้างต้นฟังก์ชันที่คำนวณนิพจน์มีแนวโน้มที่จะโยนข้อยกเว้นดังนั้นเมื่อโทรมามันจะต้องจับข้อยกเว้นทำพรอมต์ที่สอดคล้องกันหรือดำเนินการประมวลผลที่เกี่ยวข้องเพื่อหลีกเลี่ยง มันทำให้เกิดข้อผิดพลาดของระบบและส่งผลกระทบต่อความงามของส่วนต่อประสานโปรแกรม หากเราเพียงแค่รายงานข้อผิดพลาดเราสามารถเขียนพรอมต์ที่เกี่ยวข้องสำหรับการรายงานข้อผิดพลาดในช่วงกลางยกเว้น ... สิ้นสุด หากคุณต้องการดูข้อผิดพลาดประเภทใดคุณต้องปฏิบัติตามการปฏิบัติด้านบนเพื่อรับข้อผิดพลาด
ลอง ... ในที่สุด ... โดยทั่วไปแล้วจะใช้ในการดำเนินการที่เกี่ยวข้องหลังจากจัดสรรทรัพยากรบางอย่าง ด้วยความพยายาม ... ในที่สุด ... คำสั่งสิ้นสุดเราสามารถวางคำสั่งการดำเนินการอย่างสมบูรณ์ในการลอง ... ในที่สุดหลังจากการจัดสรรทรัพยากรและจินตนาการว่าสิ่งนี้สามารถดำเนินการได้อย่างราบรื่น ออกจากวงกลมนี้และเข้าสู่ในที่สุดโดยไม่ต้องดำเนินการตามลำดับ ในที่สุด ... สิ้นสุดเราสามารถทำงานหลังจากการทำงานบางอย่างเช่นการปล่อยทรัพยากรที่จัดสรรในเวลานั้นเพราะไม่ว่าข้างต้นจะดำเนินการอย่างราบรื่นหรือเมื่อพบข้อยกเว้นข้อความที่นี่จะถูกดำเนินการ
จะเห็นได้ว่าคำสั่งข้างต้นถูกตั้งค่าสำหรับการจับข้อยกเว้นและคำสั่งต่อไปนี้ถูกตั้งค่าสำหรับการจัดสรรทรัพยากร แต่เพื่อนบางคนบอกว่าเราควรทำอย่างไรถ้าเราต้องการจับข้อยกเว้นและกู้คืนทรัพยากร น่าเสียดายที่บอร์แลนด์ไม่ได้ลอง ... ยกเว้น ... ในที่สุด ... จบลง
ในระยะสั้นการใช้อย่างมีเหตุผลของคลาสข้อยกเว้นสามารถลดการเขียนโปรแกรมของเราได้อย่างมากและทำให้แนวคิดโปรแกรมของเราชัดเจนขึ้น โปรแกรมที่เขียนนั้นสวยงามกว่า