ฉันเขียนย่อหน้าตามที่อยู่ด้านล่าง ข้อผิดพลาดใหญ่ของ Delphi คุณไม่ต้องกังวลใจที่จะอ่าน ฉันจะทำซ้ำที่นี่
แต่ฉันคิดว่าคุณสามารถดูความคิดเห็นด้านล่างได้
http://www.csdn.net/Develop/read_article.asp?id=12525
รหัสเดิมเป็นแบบนี้
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
var
สตริง :TStringList;
เริ่ม
หากไม่ได้รับมอบหมาย (สตริง) แล้ว
เริ่ม
สตริง :=TStringList.Create;
// ShowMessage('sfdasfd'); ถ้าบวกประโยคนี้หรือประโยคนั้นเข้าไปก็ไม่มีปัญหาครับ 555
จบ;
สตริงฟรี;
สตริง := ไม่มี;
จบ;
จริงๆ แล้ว มีเพียงบรรทัดเดียวเท่านั้นที่ฉันต้องการเน้น นั่นคือบรรทัดที่ว่าง
แต่มีโค้ดอื่น ๆ ที่สร้างปัญหาโดยไม่จำเป็นมากมาย ฉันได้เน้นย้ำไปหลายครั้งแล้ว แต่โค้ดหลักยังคงถูกปกคลุมไปด้วยมาลัยอื่น ๆ และมักจะทำให้เกิดความเข้าใจผิดอยู่เสมอ
ฉันเขียนโค้ดใหม่ดังนี้:
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
var
สตริง :TStringList;
เริ่ม
สตริงฟรี;
จบ;
ที่จริงแล้ว คลาส TStringList ในโค้ดนี้สามารถแทนที่ด้วยคลาสใดก็ได้ที่คุณต้องการลอง
ด้วยวิธีนี้ หากคุณใช้หน้าต่างนาฬิกา CPU คุณจะพบสิ่งต่างๆ แต่ถ้าคุณไม่ใช้งาน คุณก็แค่กด Ctrl+F2
ยุติโปรแกรม
ฉันไม่รู้ว่าชื่อนี้มีความหมายอะไรโง่ ๆ หรือเปล่า แต่มันก็เป็นภาษาจีนอยู่ดี คุณและฉันต่างก็เข้าใจ
ที่จริงแล้ว จุดประสงค์ของโค้ดนี้คือเพื่อเตือนให้คุณใส่ใจกับการใช้ออบเจ็กต์ที่ถูกต้อง สำหรับสาเหตุของข้อผิดพลาดในโค้ดนี้
ฉันคิดว่ามันเป็นการละเลยคอมไพเลอร์จริงๆ แต่ถ้าคุณไม่มีการวิจัยเกี่ยวกับโครงสร้างหน่วยความจำของคลาสและอ็อบเจ็กต์ ฉันขอแนะนำให้คุณ: อันดับแรก ปล่อยมันไป และประการที่สอง ศึกษามัน