Tôi gặp một vấn đề biên soạn với mã của tôi trong Delphi 2006. Tôi đang sử dụng một static String mảng:Delphi Lỗi E2283 Quá nhiều hằng địa phương
fsi_names : array [0..FSI_NUM_VARS-1] of string;
Trong một thủ tục mà tôi gọi vào lúc bắt đầu của chương trình, Tôi gán các giá trị cho mảng này. Mã này được tạo tự động bởi một tập lệnh mà tôi đã viết. Nó bao gồm các dòng tương tự như dòng tiếp theo:
fsi_names[idFSI_FLIGHT_PATH_ANGLE] := 'FSI_FLIGHT_PATH_ANGLE';
Có tổng cộng khoảng 2000 phần tử được gán trong mảng này. Tôi không thể tìm ra số ma thuật mà trình biên dịch chết, nhưng nó hoạt động với năm 1853 và không hoạt động với 2109.
Điều này là tôi cần mảng này để chuyển đổi ID (là chỉ mục cho mảng) cho một tên như một chuỗi cho các ứng dụng khác nhau.
Tôi biết rằng nếu tôi chia danh sách bài tập và đưa các phần vào các thủ tục khác nhau, thì nó sẽ hoạt động. Nhưng vì mã được tạo tự động và thay đổi thường xuyên, phương pháp này không hoàn toàn thoải mái.
Tôi cũng nghĩ về việc đưa nội dung vào một tệp và đọc nó trong thời gian chạy, nhưng tôi muốn giữ số lượng tệp tôi phải gửi đến mức tối thiểu. Ngoài ra, tôi muốn bảo vệ nội dung từ người dùng trung bình, để anh ấy không gây rối với nó.
Bạn có ý tưởng làm cách nào để vượt qua giới hạn của trình biên dịch hay thay đổi mã của tôi để đạt được mục tiêu của mình không?
Trợ giúp được đánh giá rất nhiều.
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/cm_too_many_consts_xml.html –
Có giới hạn áp dụng nếu bên ngoài một thủ tục? Đó là nơi tôi sẽ đặt nó anyway. – mj2008
@Andreas Rejbrand: Cảm ơn bạn vì gợi ý này - Tôi cũng tìm thấy nó thông qua Google, nhưng nó không đề cập đến một con số hạn chế, và tôi hy vọng sẽ nhận được một số lời khuyên từ tất cả các lập trình viên có kinh nghiệm ở đây :-) – Flo