ปริศนาของ const
ใน Delphi 7: ทำไมคุณสามารถมอบหมายค่าได้?
หากคุณเพิ่งเปลี่ยนโปรเจ็กต์ Delphi คุณอาจพบกับสถานการณ์ที่น่าประหลาดใจ: การทำงานกับการประกาศ const
ที่มีพฤติกรรมแตกต่างกันในสภาพแวดล้อมที่แตกต่างกัน บางทีคุณอาจเคยเจอข้อผิดพลาดระบุว่า “ด้านซ้ายไม่สามารถมอบหมายค่าได้” ขณะรันโค้ดที่คุณเชื่อว่าถูกต้อง อย่ากังวล! โพสต์บล็อกนี้มีเป้าหมายในการคลี่คลายปริศนานี้และอธิบายว่าคุณสามารถควบคุมการกำหนดค่าของ const
ใน Delphi 7 ได้อย่างไร
ฉาก: การวิเคราะห์ปัญหา
พิจารณาส่วนของโค้ด Delphi ที่คุณอาจได้คัดลอกมาจากโปรเจ็กต์หนึ่งไปยังอีกโปรเจ็กต์หนึ่ง:
procedure TForm1.CalculateGP(..)
const
Price : money = 0;
begin
...
Price := 1.0;
...
end;
ในโปรเจ็กต์แรก โค้ดนี้คอมไพล์ได้โดยไม่มีปัญหา ทำให้คุณสามารถมอบหมายค่าดำเนินการให้กับ Price
ได้ อย่างไรก็ตาม ในโปรเจ็กต์ใหม่ของคุณ Delphi จะออกข้อร้องเรียน—จำกัดคุณไม่ให้มอบหมายค่าใด ๆ ให้กับ const
ของคุณ ความแตกต่างนี้ทำให้หลายๆ นักพัฒนางงงวย:
- เกิดอะไรขึ้นเบื้องหลัง?
- ทำไมโปรเจ็กต์บางแห่งจึงสามารถรองรับฟังก์ชันนี้และอื่นๆ ไม่สามารถ?
- มีกำหนดการคอมไพเลอร์ที่สามารถเปลี่ยนพฤติกรรมเกี่ยวกับการมอบหมายค่าคงที่หรือไม่?
สาเหตุที่อยู่เบื้องหลังความสับสน
Delphi 7 แนะนำแนวคิดของ ค่าคงที่ที่สามารถมอบหมายได้ ฟีเจอร์นี้ช่วยให้นักพัฒนาสามารถกำหนดหมายเลขสิ่งที่ตัวแปร const
สามารถทำได้ แต่สถานะเริ่มต้นมักตั้งค่าเพื่อป้องกันการมอบหมายใหม่เพื่อความปลอดภัยและรักษาความถูกต้องของค่าคงที่
เมื่อพบกับข้อผิดพลาดที่น่าหงุดหงิดนั้น คุณจะตระหนักว่าคำตอบนั้นอยู่ที่การตั้งค่าและคำสั่งเฉพาะโปรเจ็กต์
วิธีแก้ไขหลัก: เปิดใช้งานค่าคงที่ที่สามารถมอบหมายได้
เพื่อเปิดใช้งานฟีเจอร์นี้ในโปรเจ็กต์ Delphi 7 ของคุณและอนุญาตให้มีการมอบหมาย const
ให้ทำตามขั้นตอนเหล่านี้:
-
เปิดตัวเลือกโปรเจ็กต์ของคุณ:
- คลิกที่
Project
ในแถบเมนู - เลือก
Options
จากรายการดรอปดาวน์
- คลิกที่
-
ปรับการตั้งค่าคอมไพลเลอร์:
- ไปที่แท็บ
Compiler
- มองหาตัวเลือกที่มีชื่อว่า Assignable Typed Constants และตรวจสอบให้แน่ใจว่ามันถูกเปิดใช้งาน
- ไปที่แท็บ
การเปิดใช้งานตัวเลือกนี้จะอนุญาตให้ใช้ไวยากรณ์นั้นในโปรเจ็กต์ใหม่ของคุณ ทำให้คุณสามารถทำงานกับ const
ได้เช่นเดียวกับในโปรเจ็กต์เดิมของคุณ
วิธีการทางเลือกในการเปิดใช้งานค่าคงที่ที่สามารถมอบหมายได้
นอกจากการเปลี่ยนการตั้งค่าโปรเจ็กต์แล้ว คุณยังสามารถแทรกคำสั่งเฉพาะที่จุดเริ่มต้นของยูนิต (ไฟล์ต้นฉบับ Pascal) เพื่อวิธีที่มีการควบคุมมากขึ้น:
- เพิ่มหนึ่งในบรรทัดต่อไปนี้:
{$J+} // เปิดใช้งานค่าคงที่ที่สามารถเขียนได้
หรือ
{$WRITEABLECONST ON} // สำหรับค่าคงที่ประเภทสามารถมอบหมายได้โดยเฉพาะ
ด้วยการทำเช่นนี้ คุณจะมั่นใจได้ว่าเมื่อไฟล์ถูกย้ายไปยังโปรเจ็กต์อื่น มันจะสามารถรักษาฟังก์ชันที่เกี่ยวข้องกับค่าคงที่ที่มอบหมายได้
บทสรุป: ความสอดคล้องในโปรเจ็กต์ของคุณ
ความเข้าใจผิดเกี่ยวกับการใช้ const
สามารถนำไปสู่อาการปวดหัวที่ไม่จำเป็น การเข้าใจบริบทและการตั้งค่าเกี่ยวกับค่าคงที่ที่สามารถมอบหมายได้จึงมีความสำคัญต่อการพัฒนาที่ราบรื่นใน Delphi 7
ครั้งต่อไปที่คุณพบปัญหานี้ อย่าลืมตรวจสอบการตั้งค่าโปรเจ็กต์หรือลองใช้คำสั่งเพื่อช่วยอำนวยความสะดวกในกระบวนการเขียนโค้ดของคุณ
ตอนนี้ ด้วยความรู้เกี่ยวกับวิธีจัดการการจัดการของ Delphi กับ const
คุณควรรู้สึกมีพลังในการรับมือกับโปรเจ็กต์การเขียนโค้ดใดๆด้วยความมั่นใจ!