Читайте также: |
|
Цікавою особливістю варіантних змінних є те, що під час виконання програми їх тип автоматично приводиться для відповідності змісту виразу. Природно, це правило вірне не для всіх типів варіантних змінних, а тільки для тих, в яких зберігаються числові (цілочисельні і дійсніі), строкові, символьні і логічні значення.
Допустимо, наприклад, що в програмі є варіантна змінна Vi, якій присвоєне значення 200. Після присвоєння змінна Vi буде цілочисельною (мати тип з кодом varbyte):
Vi:= 200;
Допустимо також, що є змінна S типу string. Тоді в результаті виконання оператора привласнення S: = Vi, значенням змінної S буде рядок ’200’ Таким чином, під час виконання оператора значення цілочисельної змінної буде автоматично переведено в символьний вигляд.
Більш того, можлива і зворотна ситуація, коли варіантна змінна рядкового типу автоматично переводиться в чисельну форму. Проте саме в таких ситуаціях можуть виникати помилки часу виконання. Розглянемо приклад безпомилкового використання варіантної змінної (лістинг 5).
Лістинг 5. Приклад безпомилкового використання варіантної змінної
Program Usingvariants2;
Var
V: Variant; { Опис варіантної змінної, тип змінної не визначений}
i: Integer; { Опис змінної типу String}
Begin
V:= '280'; { Присвоєння значення варіантній змінній V, змінній призначається рядковий тип даних}
і:= V; { Цілочисельній змінній і присвоюється значення варіантної змінної V. Значення змінної і стає рівним 280}
End.
Але значенням змінної V міг би бути не рядок '280', а, наприклад, рядок 'а280' – див. лістинг 6.
Лістинг 6 Приклад виникнення помилкової ситуації
Program Usingvariants3;
Var
V: Variant{ Опис варіантної змінної, тип змінної не визначений}
і: Integer; { Опис змінної типу String}
Begin
V:= ‘а280’; { Присвоєння значення варіантній змінній V, змінній призначається рядковий тип даних}
I:= V; { Помилка часу виконання – невідповідність типів, оскільки із рядкової варіантної змінної неможливо виділити цілочисельне значення)
End.
Виконання такої програми неможливе і буде перервано з повідомленням про помилку: "Could not convert variant of type (String) into type (Integer)" - "Неможливо привести тип String до типу Іnteger". Ця помилка з'являється не із-за неможливості перетворити рядок в числове значення взагалі, а із-за неможливості виділити ціле число саме з цього рядка.
Правила трансформації варіантних значень при використанні їх у виразах приведені в таблиці. 2.
Таблиця 2
Правила зміни варіантних значень
Дата добавления: 2015-07-11; просмотров: 207 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Визначення типу варіантних змінних | | | Варіантні масиви |