Originally posted by impersonalis@Sep 4 2005, 07:52 PM
HANDLE
Когда вы работаете с типом вы используете что-то вроде указателя на данный элемент типа( сомнительный термин, применительно к Блитц):
Type bot
Field entity
End Type
ptr.bot=New bot
ptr\entity=1
В данном случае ptr. Так вот - стандартными способами, так или иначе "превратить" переменную в указатель можно только при создании нового элемента типа, или в цикле полного перебора, или используя позиционные команды для элементов.
Что далеко не всегда удобно, и уж точно не универсально.
Команда HANDLE позволяет получить от указателя, универсальное, характеризующее только один конкретный элемент число.
Как видите - ничего сложного.
|
Слово ptr (в С - pointer, указатель) выбрано неудачно и может ввести в заблуждение.
Команда Handle не получает "указатель", а присваивает внутренний блитцевский глобальный индекс - номер экземпляра коллекции (сквозной для всех типов), который уже ссылается на двойной связанный список в исходнике Блитца в С++.
Type a
Field a,b
End Type
For i=1 To 10
a.a = New a
a\a = i
If i Mod 2
z = Handle (a.a)
a\b = z
EndIf
Next
For a.a = Each a
Print a\a + " : " + a\b
Next
WaitKey