Ноу Інти, лекція, символьні типи даних

Це теж рядок, і в майбутньому нам доведеться з нею стикатися. Цей рядок працює зовсім інакше, ніж String. Рядок String є масивом символів, в нульовому елементі якого міститься кількість байт. відводяться під цей рядок. А змінна типу PChar - це не сама рядок, а покажчик на початок рядка, тобто змінна вказує на перший символ рядка в пам'яті комп'ютера. А де ж тоді PChar зберігає кількість байт в рядку. А ніде! Ми вже говорили про таблиці символів ANSI. і з'ясували, що нульовий символ - порожній. Ось останній символ PChar якраз і зберігає цей символ, і комп'ютер. знайшовши його, вважає, що рядок закінчена.

З рядками PChar працювати дуже незручно, проте нам доведеться це робити, коли ми будемо працювати з функціями WinAPI безпосередньо. Функції WinAPI - це функції самої Windows. а не Delphi. Однак Delphi дозволяє використовувати їх. Іноді це буває необхідно, наприклад, коли коштів Delphi недостатньо для виконання наміченого завдання. Використання таких функцій не завжди зручно, проте вони виконуються процесором набагато швидше, так як містяться в самій операційній системі. Приклад - функція MessageBox ().

Ви вже звикли виводити повідомлення за допомогою функції Delphi ShowMessage (). Звикайте до нової функції!

Ноу Інти, лекція, символьні типи даних


Мал. 10.1. Вікно функції MessageBox ()

Давайте відразу спробуємо цю функцію на прикладі. Створіть новий додаток. На форму встановіть компонент Label для виведення результату, і кнопку. У властивості Caption компонента Label видаліть весь текст. Створюємо обробник натискання кнопки. Оскільки функція повертає перераховувати значення. ми можемо використовувати case. Пишемо такий код:

У прикладі в якості селектора для case ми вказали саму функцію. Коли користувач натисне одну з кнопок, функція поверне числове значення. відповідне константі однієї з кнопок. В результаті, виконається потрібний код, і в властивість Caption компонента Label запишеться, яка з кнопок була натиснута.

Збережіть приклад, відкомпілюйте і подивіться, як він працює. Спробуйте змінити тип вікна на інший, наприклад на MB_ICONQUESTION.

Схожі статті