Директиви для процедур та функцій
Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.
У Delphi 8 з процедурами та функціями використовуються такі директиви: register, Delphi, edeel, stdcall та safecall. Наприклад,
Це пов'язано з тим, що процедури або функції, розроблені вами, можуть бути використані в різних середовищах програмування, де виклик параметрів відбувається в різній послідовності. Поки не обговорюватимемо ці питання, на початковому етапі вивчення вони вам не знадобляться, тому що в середовищі Delphi 8 всі виклики відбуваються однаково і немає необхідності в цих директивах, але якщо розробляти бібліотеки, які мають працювати з іншими мовами на платформі NET, то необхідно використовувати директиву stdcall. Опис цих директив наведено в табл. 4.1.
Таблиця 4.1. Угоди про виклики процедур
Директива Порядок передачі
параметрів Очищення параметрів
register Зліва направо
Delphi Ліворуч
edeel Праворуч наліво
stdcall Праворуч наліво
safecall Праворуч наліво
Директиви forward та overload
Директива overload також часто використовується в програмах. Можна обійтися і без цієї директиви, але її використання робить програми наочнішими і зручнішими в роботі. Наприклад, потрібно створити процедуру виведення на друк цілих чисел. Для цього написали процедуру із сигнатурою Print (dig: Integer),-. Через деякий час знадобилося написати процедуру виведення на друк речових чисел, тобто. Print (dig: Real);. Але коли ви розмістите обидві процедури в одній програмі, компілятор видасть помилку, оскільки він не зможе розібратися, яку процедуру використовувати, якщо відбувається виклик процедури так: Print ( 5 );. У цьому випадку є два виходи: абозмінити ім'я другої процедури, назвати її, наприклад, FrintReal, або використовувати директиву overload. Іншими словами, в одній програмі ці процедури можна оголосити так:
Хоча в інших мовах програмування перевантаження процедур і функцій вбудовано за замовчуванням, у мові Delphi це зроблено очевидно. При цьому можна виділити дві переваги: компілятор працює швидше і програма стає наочнішою.