Tôi muốn sử dụng thủ tục của đối tượng trong một bản ghi, như vậy:Làm cách nào để bao gồm một con trỏ phương thức trong một hằng số đã nhập?
TCommandRec = record
name: string;
fn: procedure of object;
end;
tôi có thể tạo ra một mảng với điều này bằng cách chuyển nhượng:
commands: array [0..1] of TCommandRec;
...
commands[0].name := '-help';
commands[0].fn := DoHelp;
commands[1].name := '-load';
commands[1].fn := DoLoad;
Những gì tôi thực sự muốn làm tuyên bố một hằng số:
const
cmds: array [0..1] of TCommandRec =
(
(name: '-help'; fn: DoHelp),
(name: '-load'; fn: DoLoad)
);
Tuy nhiên, tôi gặp lỗi cho DoHelp và DoLoad - Biểu thức không đổi mong đợi. Đây là hai phương thức của một lớp. Có một số cú pháp tôi cần phải sử dụng để làm cho công việc này hoặc tôi bị mắc kẹt xây dựng các mảng tại thời gian chạy?
không, phương pháp con trỏ không đủ điều kiện biểu hiện như không đổi (chủ yếu là do sơ thẩm con trỏ - xem TMethod.Data). – OnTheFly
@ user539484 Con trỏ phương pháp với các đối tượng liên tục là các biểu thức không đổi –
@David Heffernan, bạn có ví dụ không? – OnTheFly