1. ข้อมูลเบื้องต้นเกี่ยวกับข้อกำหนด
ข้อกำหนดนี้กำหนดกฎและข้อควรระวังเป็นหลักที่ควรปฏิบัติตามในระหว่างกระบวนการเขียนโปรแกรมต้นฉบับ Delphi วัตถุประสงค์ของการเขียนข้อกำหนดนี้คือเพื่อทำให้นิสัยการเขียนซอร์สโค้ดของนักพัฒนาซอฟต์แวร์ของบริษัทสอดคล้องกัน ซึ่งช่วยให้สมาชิกในทีมแต่ละคนเข้าใจโค้ดของสมาชิกในทีมคนอื่นๆ ซึ่งอำนวยความสะดวกในการบำรุงรักษาระบบหน่วยความจำการพัฒนารองของซอร์สโค้ด
2. ข้อกำหนดรูปแบบทั่วไป
2.1 การเยื้อง
การเยื้องเป็นช่องว่างสองช่องที่เปิดเผยเพื่อเพิ่มความสามารถในการอ่านเมื่อระดับโปรแกรมต้นฉบับเปลี่ยนแปลง กฎการเยื้องคือสองช่องว่างต่อระดับ ไม่อนุญาตให้ใช้แท็บ เนื่องจาก Tab จะสร้างเอฟเฟกต์ที่แตกต่างกันเนื่องจากการตั้งค่าที่แตกต่างกันโดยผู้ใช้ เมื่อเผชิญกับการเริ่มต้นหรือเข้าสู่การตัดสิน การวนซ้ำ การจัดการข้อยกเว้น ด้วยคำสั่ง การประกาศประเภทบันทึก การประกาศคลาส ฯลฯ ให้เพิ่มหนึ่งระดับ เมื่อเผชิญกับการสิ้นสุดหรือออกจากการตัดสิน การวนซ้ำ การจัดการข้อยกเว้น พร้อมคำสั่ง การประกาศประเภทบันทึก คลาส การประกาศจะลดลงหนึ่งระดับเมื่อรอ ตัวอย่างเช่น:
ถ้า TmpInt <> 100 แล้ว
TmpInt := 100;
2.2 เริ่มต้น..สิ้นสุด
คำสั่งเริ่มต้นและคำสั่งสิ้นสุดต้องมีหนึ่งบรรทัดในโปรแกรมต้นฉบับ ตัวอย่างเช่น:
สำหรับฉัน := 0 ถึง 10 จะเริ่มต้น // การใช้งานไม่ถูกต้อง
จบ;
สำหรับฉัน := 0 ถึง 10 do //แก้ไขการใช้งาน
เริ่ม
จบ;
2.3 ช่องว่าง
เพิ่มช่องว่างที่ปลายทั้งสองของตัวดำเนินการและสัญลักษณ์การตัดสินเชิงตรรกะ เช่น: I := I + 1;, a และ b เป็นต้น แต่ไม่จำเป็นต้องเว้นวรรคเมื่อเพิ่มวงเล็บ ตัวอย่างเช่น: if ( a > b ) ดังนั้น // การใช้งานผิด
ถ้า (a > b) แล้ว //แก้ไขการใช้งาน
อีกตัวอย่างหนึ่ง: การทดสอบ PROcedure (Param1: จำนวนเต็ม; Param3: string);
3. ข้อกำหนดรูปแบบการเขียนไวยากรณ์ Object Pascal
3.1 คำสงวน
คำหรือคีย์เวิร์ดที่สงวนไว้ในภาษา Object Pascal ควรเขียนด้วยอักษรตัวพิมพ์เล็กทั้งหมด
3.2 ขั้นตอนและหน้าที่
3.2.1 การตั้งชื่อและรูปแบบ
ชื่อขั้นตอนและฟังก์ชันควรประกอบด้วยคำที่มีความหมายทั้งหมด และอักษรตัวแรกของคำทั้งหมดควรเป็นตัวพิมพ์ใหญ่ ตัวอย่างเช่น:
รูปแบบโพรซีเดอร์ฮาร์ดดิส;//การตั้งชื่อไม่ถูกต้อง
ขั้นตอน FormatHardDisk;//การตั้งชื่อที่ถูกต้อง
ขั้นตอนและฟังก์ชันที่ตั้งค่าเนื้อหาของตัวแปรควรขึ้นต้นด้วย Set เช่น:
ขั้นตอน SetUserName;
ขั้นตอนและฟังก์ชันที่อ่านเนื้อหาของตัวแปรควรใช้ Get เป็นคำนำหน้า เช่น
ฟังก์ชั่น GetUserName: สตริง;
3.2.2 พารามิเตอร์ของขั้นตอนและฟังก์ชัน
3.2.2.1 การตั้งชื่อ
พารามิเตอร์ประเภทเดียวกันเขียนอยู่ในประโยคเดียวกัน:
ขั้นตอน Foo (Param1, Param2, Param3: Integer; Param4: string);
3.2.2.2 การตั้งชื่อ
พารามิเตอร์ทั้งหมดต้องมีความหมาย และเมื่อชื่อพารามิเตอร์เหมือนกับชื่อของแอตทริบิวต์อื่นๆ ให้เพิ่มคำนำหน้า 'A' เช่น:
ขั้นตอน SomeProc (AUserName: string; AUserAge: จำนวนเต็ม);
3.2.2.3 ความขัดแย้งในการตั้งชื่อ
เมื่อทั้งสองหน่วยที่ใช้มีฟังก์ชันหรือขั้นตอนที่มีชื่อเดียวกัน ดังนั้นเมื่อคุณอ้างอิงฟังก์ชันหรือขั้นตอนนี้ ฟังก์ชันหรือขั้นตอนในหน่วยที่ประกาศในภายหลังในส่วนคำสั่งการใช้งานจะถูกดำเนินการ เพื่อหลีกเลี่ยง 'uses-clause-dependence' นี้ คุณจะต้องเขียนแหล่งที่มาของฟังก์ชันหรือขั้นตอนทั้งหมดเมื่ออ้างอิงถึง ตัวอย่างเช่น:
SysUtils.FindClose(SR);
Windows.FindClose(จัดการ);
3.3 ตัวแปร
3.3.1 การตั้งชื่อและรูปแบบตัวแปร
ประการแรก ตัวแปรทั้งหมดจะต้องมีชื่อที่มีความหมายเพื่อให้สมาชิกในทีมคนอื่นๆ สามารถเข้าใจความหมายของตัวแปรต่างๆ ได้อย่างง่ายดาย การตั้งชื่อตัวแปรสามารถใช้ชื่อภาษาอังกฤษที่มีความหมายเหมือนกันได้ แต่ตัวอักษรตัวแรกของแต่ละคำจะต้องเป็นตัวพิมพ์ใหญ่ ตัวอย่างเช่น:
var
WriteFormat::สตริง;
ในขณะเดียวกัน คำย่อบางคำก็สามารถนำมาใช้กับบางประเภทได้โดยเฉพาะดังนี้
ประเภทตัวชี้
ป
ประเภทบันทึก
รับ
ประเภทอาร์เรย์
อาร์
ใจดี
ระดับ
ตัวแปรควบคุมลูปมักจะใช้อักขระตัวเดียว เช่น i, j หรือ k นอกจากนี้ยังอนุญาตให้ใช้ชื่อที่มีความหมาย เช่น UserIndex
3.3.2 ตัวแปรท้องถิ่น
การใช้ตัวแปรท้องถิ่นภายในขั้นตอนเป็นไปตามกฎการตั้งชื่อสำหรับตัวแปรอื่นๆ ทั้งหมด
3.3.3 ตัวแปรโกลบอล
พยายามอย่าใช้ตัวแปรร่วม หากคุณต้องใช้ตัวแปรร่วม คุณต้องเพิ่มคำนำหน้า 'g' และควรสะท้อนถึงประเภทของตัวแปรในชื่อตัวแปร ตัวอย่างเช่น:
gprecUserCount: point;//ตัวแปร Global ชื่อ UserCount ประเภทของมันคือตัวชี้ไปยังโครงสร้าง
แต่ตัวแปรโกลบอลสามารถใช้ภายในโมดูลได้ ตัวแปรโกลบอลทั้งหมดภายในโมดูลจะต้องขึ้นต้นด้วย 'F' หากจำเป็นต้องแลกเปลี่ยนข้อมูลระหว่างหลายโมดูล จะต้องบรรลุผลสำเร็จด้วยการประกาศคุณลักษณะ ตัวอย่างเช่น:
พิมพ์
TFormOverdraftReturn = คลาส (TForm)
ส่วนตัว
{ประกาศส่วนตัว}
FuserName: สตริง;
FuserCount: จำนวนเต็ม;
ขั้นตอน SetUserName(ค่า: สตริง);
ฟังก์ชัน GetUserName: สตริง;
สาธารณะ
{ประกาศสาธารณะ}
คุณสมบัติชื่อผู้ใช้: สตริงอ่าน GetUserName เขียน SetUserName;
คุณสมบัติ UserCount: จำนวนเต็มอ่าน FuserCount เขียน FuserCount;
จบ;
3.4 ประเภท
3.4.1 ระเบียบการกรณี
ชื่อประเภทคำสงวนจะต้องเป็นตัวพิมพ์เล็กทั้งหมด โดยทั่วไปประเภท Win32 API จะใช้ตัวพิมพ์ใหญ่ทั้งหมด สำหรับประเภทอื่น ตัวอักษรตัวแรกจะเป็นตัวพิมพ์ใหญ่ และตัวอักษรที่เหลือจะเป็นตัวพิมพ์เล็ก ตัวอย่างเช่น
var
MyString: string; // คำสงวน
WindowHandle: HWND; // ประเภท Win32 API
I: Integer; // ตัวระบุประเภทที่แนะนำในหน่วยระบบ
3.4.2 ประเภทจุดลอยตัว
พยายามอย่าใช้ประเภท Real มันเป็นเพียงเพื่อความเข้ากันได้กับรหัส Pascal เก่าเท่านั้น ประเภท Double ได้รับการปรับให้เหมาะสมสำหรับโปรเซสเซอร์และบัสข้อมูล และเป็นโครงสร้างข้อมูลมาตรฐานที่กำหนดโดย IEEE เมื่อค่าเกินช่วงของ Double ให้ใช้ Extended แต่ Java ไม่รองรับ Extended อย่างไรก็ตาม อาจใช้ประเภท Single เมื่อใช้ DLL ที่เขียนในภาษาอื่น
3.4.3 ประเภทการแจงนับ
ชื่อของประเภทการแจงนับต้องมีความหมายและชื่อประเภทต้องนำหน้าด้วย 'T' ชื่อของเนื้อหาของประเภทการแจงนับต้องมีตัวย่อของชื่อประเภทการแจงนับ ตัวอย่างเช่น
TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB);
3.4.4 ประเภทอาร์เรย์
ชื่อของประเภทอาร์เรย์จะต้องมีความหมายและชื่อประเภทจะต้องนำหน้าด้วย 'T' หากคุณประกาศตัวชี้ให้กับประเภทอาร์เรย์ คุณต้องเติมชื่อประเภทด้วย 'P' นำหน้า เช่น:
พิมพ์
PCycleArray = ^TCycleArray;
TCycleArray = array[1..100] ของจำนวนเต็ม;
3.4.5 ประเภทบันทึก
ชื่อของประเภทเรกคอร์ดจะต้องมีความหมาย และชื่อประเภทจะต้องนำหน้าด้วย 'T' หากคุณประกาศตัวชี้ให้กับประเภทอาร์เรย์ คุณต้องเติมชื่อประเภทด้วย 'P' นำหน้า เช่น:
พิมพ์
PEmployee = ^TEmployee;
พนักงาน=บันทึก
ชื่อพนักงาน: string
อัตราพนักงาน: สองเท่า;
จบ;
หมวด 3.5
3.5.1 การตั้งชื่อและรูปแบบ
ชื่อคลาสต้องมีความหมายและชื่อประเภทต้องขึ้นต้นด้วย 'T' ตัวอย่างเช่น:
พิมพ์
TCustomer = คลาส (TObject)
ชื่อของอินสแตนซ์คลาสมักจะเป็นชื่อของคลาสลบด้วย 'T' ตัวอย่างเช่น:
var
ลูกค้า: TCustomer;
3.5.2 ตัวแปรในคลาส
3.5.2.1 การตั้งชื่อและรูปแบบ
ชื่อคลาสต้องมีความหมายและชื่อประเภทต้องขึ้นต้นด้วย 'F' ตัวแปรทั้งหมดต้องเป็นสี่มิติ หากคุณต้องการเข้าถึงตัวแปรนี้จากภายนอก คุณจะต้องประกาศแอตทริบิวต์
3.5.3 วิธีการ
3.5.3.1 การตั้งชื่อและรูปแบบ
การตั้งชื่อและรูปแบบเดียวกันสำหรับฟังก์ชันและขั้นตอน
3.5.3.2 วิธีการเข้าถึงทรัพย์สิน
วิธีการเข้าถึงทรัพย์สินทั้งหมดจะต้องปรากฏในแบบส่วนตัวหรือมีการป้องกัน การตั้งชื่อวิธีการเข้าถึงแอตทริบิวต์เหมือนกับฟังก์ชันและขั้นตอน นอกจากนี้ วิธีการอ่านต้องใช้คำนำหน้า 'รับ' วิธีการเขียนต้องใช้คำนำหน้า 'ตั้งค่า' พารามิเตอร์ของวิธีการเขียนต้องมีชื่อว่า 'ค่า' และประเภทของมันจะต้องสอดคล้องกับคุณสมบัติที่จะเขียน ตัวอย่างเช่น:
TSomeClass = คลาส (TObject)
ส่วนตัว
fsomeField: จำนวนเต็ม;
ได้รับการคุ้มครอง
ฟังก์ชัน GetSomeField: จำนวนเต็ม;
ขั้นตอน SetSomeField (ค่า: จำนวนเต็ม);
สาธารณะ
คุณสมบัติ SomeField: จำนวนเต็มอ่าน GetSomeField เขียน SetSomeField;
จบ;
3.6 คุณสมบัติ
3.6.1 การตั้งชื่อและรูปแบบ
สอดคล้องกับชื่อของตัวแปรคลาสที่นำหน้าด้วย 'F' ที่ใช้ในการดำเนินการ
3.7 เอกสารประกอบ
3.7.1 ไฟล์โครงการ
3.7.1.1 โครงสร้างไดเรกทอรีโครงการ
โฮมไดเร็กทอรีของโปรแกรม--Bin (เส้นทางที่แอปพลิเคชันตั้งอยู่)
-Db (เส้นทางไปยังฐานข้อมูลท้องถิ่น)
-Doc (เส้นทางที่เอกสารตั้งอยู่)
-Hlp (เส้นทางไปยังไฟล์ช่วยเหลือ)
- สำรองข้อมูล (เส้นทางสำรอง)
-Tmp (เส้นทางไฟล์ชั่วคราว)
3.7.1.2 การตั้งชื่อ
ไฟล์โครงการจะต้องมีชื่อที่มีความหมาย ตัวอย่างเช่น: ไฟล์โครงการของข้อมูลระบบใน Delphi ชื่อ SysInfo.dpr
3.7.2 ไฟล์แบบฟอร์ม
3.7.2.1 การตั้งชื่อ
สอดคล้องกับชื่อของแบบฟอร์ม: ตัวอย่างเช่น ถ้าชื่อของแบบฟอร์มคือ FormMain ชื่อของไฟล์แบบฟอร์มจะเป็น FormMain.frm
3.7.3 ไฟล์โมดูลข้อมูล
3.7.3.1 การตั้งชื่อ
ไฟล์โมดูลข้อมูลควรตั้งชื่อให้มีความหมายและนำหน้าด้วย 'DM' ตัวอย่างเช่น: โมดูลข้อมูลผู้ใช้ชื่อ 'DMCustomers.dfm'
3.7.4 ไฟล์โมดูลข้อมูลระยะไกล
3.7.4.1 การตั้งชื่อ
ไฟล์โมดูลข้อมูลระยะไกลควรตั้งชื่ออย่างมีความหมาย และใช้ 'RDM' เป็นคำนำหน้า ตัวอย่างเช่น: โมดูลข้อมูลระยะไกลของผู้ใช้ชื่อ 'RDMCustomers.dfm'
3.7.5 ไฟล์หน่วย
3.7.5.1 หน่วยสามัญ
3.7.5.1.1 การตั้งชื่อไฟล์หน่วย
ไฟล์หน่วยควรตั้งชื่อให้มีความหมายและใช้ 'หน่วย' เป็นคำนำหน้า ตัวอย่างเช่น: หน่วยทั่วไปมีชื่อว่า 'UnitGeneral'
3.7.5.2 หน่วยแบบฟอร์ม
3.7.5.2.1 การตั้งชื่อ
ชื่อของไฟล์หน่วยแบบฟอร์มจะต้องสอดคล้องกับชื่อของแบบฟอร์ม ตัวอย่างเช่น หากฟอร์มหลักเรียกว่า FormMain.pas ชื่อของไฟล์ Form Unit จะเป็น: UnitFormMain
3.7.5.3 หน่วยโมดูลข้อมูล
3.7.5.3.1 การตั้งชื่อ
ชื่อของไฟล์หน่วยโมดูลข้อมูลจะต้องสอดคล้องกับชื่อของโมดูลข้อมูล ตัวอย่างเช่น หากโมดูลข้อมูลหลักเรียกว่า DMMain.pas ชื่อของไฟล์ Data Module Unit จะเป็น: UnitDMMain
3.7.5.4 ส่วนหัวของไฟล์
วัตถุประสงค์ ผู้เขียน วันที่ อินพุตและเอาต์พุตของไฟล์ควรเขียนไว้ที่ส่วนหัวของไฟล์ทั้งหมด ตัวอย่างเช่น:
-
วันที่แก้ไข:
ผู้เขียน:
ใช้:
โครงสร้างของโมดูลนี้ประกอบด้วย:
-
3.7.6 แบบฟอร์มและแบบฟอร์มโมดูลข้อมูล
3.7.6.1 คลาสฟอร์ม
1. แบบฟอร์มมาตรฐานการตั้งชื่อชั้นเรียน
คลาสของแบบฟอร์มควรตั้งชื่อให้มีความหมายและนำหน้าด้วย 'TForm' ตัวอย่างเช่น: ชื่อของคลาส About Form คือ:
TAboutForm = คลาส (TForm)
ชื่อของแบบฟอร์มหลักคือ
TMainForm = คลาส (TForm)
2. มาตรฐานการตั้งชื่อสำหรับอินสแตนซ์คลาสแบบฟอร์ม
ชื่อของอินสแตนซ์คลาส Form ควรสอดคล้องกับชื่อของคลาส Form โดยที่เอา 'T' ออก ตัวอย่างเช่น:
พิมพ์ชื่อ
ชื่ออินสแตนซ์
เกี่ยวกับแบบฟอร์ม
เกี่ยวกับแบบฟอร์ม
ฟอร์มเมน
แบบฟอร์มหลัก
Tแบบฟอร์มรายการลูกค้า
แบบฟอร์มการเข้าลูกค้า
3.7.6.2 แบบฟอร์มโมดูลข้อมูล
3.7.6.2.1 มาตรฐานการตั้งชื่อแบบฟอร์มโมดูลข้อมูล
คลาสฟอร์มโมดูลข้อมูลควรตั้งชื่ออย่างมีความหมาย และใช้ 'TDM' เป็นคำนำหน้า ตัวอย่างเช่น:
TDMCustomer = คลาส (TDataModule)
TDMOrders = คลาส (TDataModule)
3.7.6.2.2. มาตรฐานการตั้งชื่ออินสแตนซ์ของโมดูลข้อมูล
ชื่อของอินสแตนซ์คลาสฟอร์มโมดูลข้อมูลควรสอดคล้องกับชื่อของคลาสฟอร์มโมดูลข้อมูลโดยละเว้น 'T' ตัวอย่างเช่น:
พิมพ์ชื่อ
ชื่ออินสแตนซ์
TCustomerDataModule
โมดูลข้อมูลลูกค้า
สั่งซื้อโมดูลข้อมูล
สั่งซื้อโมดูลข้อมูล
3.8 การควบคุม
3.8.1 การตั้งชื่ออินสแตนซ์การควบคุม
อินสแตนซ์ของการควบคุมควรนำหน้าด้วยชื่อของคลาสการควบคุมลบด้วย 'T' ตัวอย่างเช่น:
ชื่อของ Tedit ที่ใช้ป้อนชื่อผู้ใช้คือ: EditUserName
3.8.2 อักษรย่อของการควบคุม
ตัวย่อต่อไปนี้สามารถใช้สำหรับชื่อของตัวควบคุมได้ แต่ตัวย่อที่ใช้จะถูกเพิ่มด้วย '_' ระหว่างชื่อตัวควบคุม:
3.8.2.1 แท็บมาตรฐาน
มม. TMainMenu
น. TPopupMenu
mmiTMainMenuItem
pmiTPopupMenuItem
lblTLabel
แก้ไข TEdit
เมม TMemo
btn TButton
cb TCheckBox
rb TRdioButton
ปอนด์ TListBox
cb TComboBox
scbTScrollBar
gb TGroupBox
rg TRdioGroup
pnlTPanel
cl TCommandList
3.8.2.2 แท็บเพิ่มเติม
bbtn TBitBtn
sbTSpeedButton
ฉัน TMaskEdit
sg TStringGrid
dgTDrawGrid
imgTImage
shp TShape
bvl
sbxTScrollBox
clb TCheckListbox
spl TSplitter
stx TStaticText.stx
cht TChart
3.8.2.3 แท็บ Win32
tbcTTabControl
pgcTPageControl
ilTImageList
อีกครั้ง TRichEdit
tbr TTrackBar
prb TProgressBar
คุณ TUpDown
hk THotKey
อานิ ทันนิเมท
dtpTDateTimePicker
tvTTreeView
lv TListView
hdrTHeaderControl
stb TStatusBar
tlb TToolBar.tlb
clbTCoolBar
3.8.2.4 แท็บระบบ
TM TTimer
pb TPaintBox.pb
mpTMMediaPlayer
โอเล็ก TOleContainer
ddccTDDEClientConv
ddciTDDEClientItem
ddscTDDEServerConv
ddsiTDDEServerItem
3.8.2.5 แท็บอินเทอร์เน็ต
cskTClientSocket
sskTServerSocket
wbd TWebDispatcher
pp TPageProducer
tp TQueryTableProducer
dstp TDataSetTableProducer
nmdt TNMDayTime
โดยที่ TNMEcho
nf TNMFinger
nftpTNMFtp
nhttpTNMHttp
ข้อความ TNMMsg
nmsgTNMMSGServ
nntp TNMNNTP
เอ็นป๊อป TNMPop3
nuup TNMUUPProcessor
smtp TNMSMTP
nst TNMStrm
nst TNMStrmServ
ntm TNMTime
nudpTNMUdp
PSK TPowerSock
ngs TNMเซิร์ฟเวอร์ทั่วไป
htmlTHtml
urlTNMURL
smlTSimpleMail
3.8.2.6 แท็บการเข้าถึงข้อมูล
dsTDataSource
tbl TTตาราง
qry TQuery
spTStoredProc
dbTDataBase
ssn Tsession
bmTBatchMove
usql TUpdateSQL
3.8.2.7 แท็บการควบคุมข้อมูล
dbgTDBGrid
dbn TDBNavigator
dbtTDBText
dbeTDBEdit
dbm TDBMemo
dbiTDBImage
dblb TDBListBox
dbcb TDBComboBox
dbch TDBCheckBox
dbrg TDBRadioGroup
dbll TDBLookupListBox
dblc TDBLookupComboBox
dbreTDBRichEdit
dbcgTDBTrlGrid
dbchTDDBChart
3.8.2.8 แท็บลูกบาศก์การตัดสินใจ
dcb TDecisionCube
dcq TDecisionQuery
dcs TDecisionSource
dcp TDecisionPivot
dcg TDecisionGrid
dcgr TDecisionGraph
3.8.2.9 แท็บ QReport
qr TQuickReport
qrsd TQRSubDetail
qrb TQRแบนด์
qrcb TQRChildBand
qrg TQRGroup
qrl TQRLLabel
qrtTQRText
qre TQREpr
qrs TQRSysData
qrm TQRMemo
qrrt TQRRichText
qrdr TQRDBRichText
qrsh TQRSShape
qri TQRImage
qrdi TQRDBMImage
qrcr TQRCompositeReport
qrp TQRPรีวิว
qrch TQRChart
3.8.2.10 แท็บกล่องโต้ตอบ
OpenDialog TOpenDialog
บันทึกกล่องโต้ตอบ TSaveDialog
OpenPictureDialog TOpenPictureDialog
บันทึก PictureDialog TSavePictureDialog
FontDialog ทีฟอนต์ไดอะล็อก
ColorDialog TColorDialog
PrintDialog TPrintDialog
PrinterSetupDialog TPrintSetupDialog
FindDialog TFindDialog
แทนที่Dialog TReplaceDialog
3.8.2.11 แท็บ Win31
dbll TDBLookupList
dblc TDBLookupCombo
tsTTabSet
เกี่ยวกับ TOutline
tnb TtabbedNoteBook
nb TNoteBook
hdrTHeader
flbTFileListBox
dlb TDirectoryListBox.dll
dcb TDriveComboBox
fcb TFilterComboBox
3.8.2.12 แท็บตัวอย่าง
gg TGauge
cg TColorGrid
spb TSpinButton.spb
ความเร็ว SpinEdit
dol TDirectoryOutline
ปฏิทินปฏิทิน
ibea TIBEventAlerter
3.8.2.13 แท็บ ActiveX
cfx TChartFX
vspTVSSpell
f1bTF1Book
vtc TVTChart
กลุ่ม TGraph
3.8.2.14 แท็บ Midas
prvTProvider
cdsTClientDataSet
qcds TQueryClientDataSet
dcomTDCOMConnection
oleeTOleEnterpriseConnection
sckTSocketConnection
rms TRemoteServer
กลาง TmidasConnection
4. ปรับเปลี่ยนข้อกำหนด
ข้อกำหนดของกฎนี้ใช้กับโปรแกรมที่รวมอยู่ในการจัดการการกำหนดค่าเท่านั้น ในการแก้ไขประเภทนี้ จะต้องคงเนื้อหาไว้ก่อนที่จะทำการแก้ไข และระบุเนื้อหาที่แก้ไขและเนื้อหาใหม่ และเพิ่มข้อมูลที่จำเป็น เช่น ตัวแก้ไข วันที่แก้ไข คำอธิบายการแก้ไข ฯลฯ ลงในส่วนหัวของไฟล์
4.1 แก้ไขบันทึกประวัติ
เมื่อทำการแก้ไขไฟล์ต้นฉบับที่ได้รับอนุมัติ ตัวแก้ไขควรเพิ่มรายการประวัติการแก้ไขไปที่ส่วนหัวของไฟล์โปรแกรม สำหรับการแก้ไขแต่ละครั้งในภายหลัง ตัวแก้ไขจะต้องกรอกข้อมูลต่อไปนี้ในรายการ:
ตัวแก้ไข
เวลาปรับเปลี่ยน
เหตุผลในการปรับเปลี่ยน
คำแนะนำในการปรับเปลี่ยนคือวิธีการแก้ไข
4.2 เพิ่มบรรทัดโค้ดใหม่
บรรทัดโค้ดใหม่ควรนำหน้าและตามด้วยบรรทัดความคิดเห็น
// ตัวแก้ไข, เวลาที่แก้ไข, คำอธิบายการแก้ไข
เพิ่มบรรทัดใหม่ของโค้ด
// สิ้นสุดการแก้ไข
4.3 ลบบรรทัดของโค้ด
ใช้บรรทัดความคิดเห็นก่อนและหลังการลบบรรทัดโค้ด
//ตัวแก้ไข, เวลาที่แก้ไข, คำอธิบายการแก้ไข
// บรรทัดของโค้ดที่ต้องการลบ (ใส่ความเห็นคำสั่งที่ต้องการลบ)
//สิ้นสุดการแก้ไข
4.4 แก้ไขบรรทัดของโค้ด
แก้ไขบรรทัดโค้ดโดยการลบบรรทัดโค้ดแล้วเพิ่มบรรทัดโค้ดใหม่
//ตัวแก้ไข, เวลาที่แก้ไข, คำอธิบายการแก้ไข
// บรรทัดโค้ดก่อนการแก้ไข
//สิ้นสุดการแก้ไข
//แก้ไขบรรทัดโค้ด
แก้ไขบรรทัดของรหัส
//สิ้นสุดการแก้ไข