Обмін даними з DLL стор
Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.
(Основний код) (Повернення ресурсів операційної системи) except
У жодному разі не можна використовувати директиву raise у секції except. end. У цій секції слід просто показати користувачеві повідомлення про виключення (або не показувати його, якщо умови роботи програми дозволяють).
З цієї причини - через наявність різних диспетчерів пам'яті - не можна використовувати рядки Delphi передачі даних між модулями. Рядки Delphi – це об'єкти і при зміні їх вмісту відбувається перерозподіл пам'яті. Це спричинить виняток, якщо перерозподіл пам'яті відбувається в іншому модулі. Тому для обміну текстовою інформацією з DLL слід використовувати змінні типу PChar.
Типовий обмін текстовою інформацією з DLL виглядає так. Якщо необхідно передати будь-який рядок у функцію, що міститься в DLL, то можна просто використовувати в функцію покажчик на рядок:
Функція SendString в DLL реалізована таким чином:
При запуску цього прикладу з'явиться повідомлення з вмістом рядка, створеного у файлі. Щоб отримати текстову інформацію з DLL, зазвичай у додатку створюється буфер, який заповнюється DLL. Зрозуміло, що розмір буфера має бути достатнім зберігання всієї текстової інформації. Щоб убезпечити себе від переповнення буфера, зазвичай разом із буфером як параметр посилається його розмір. Типовий приклад отримання текстової інформації з DLL виглядає так: