Показать сообщение отдельно
Старый 03.01.2011, 21:08   #5
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: начать перебор не с первого элемента

Сообщение от DeeJex Посмотреть сообщение
Какие нафиг хендлы
оО, ты чё, Хендлы сила, если умееш пользоватся командами After,Type, New, Before, First, Last, Each, Insert, Delete,Handle и Object (позволяет сразу-же перейти типу с заданным хендлом)...
В его случае надо создать глобалку в которой будет хранится последний хендл и тот на котором он закончил поиск и далее спомощью пары манипуляций начинать перебор сразу с того места где он его закончил. Вот представь что у него в типе 2 000 объектов, добавилось 2, и изза этих 2-х перебирать все 2 002 объекта и проводить сравнение не разумно!
в его случае надо чёт типо такого:
 Graphics 800,600,32,2


  Global HdlTec,HdlMax,Ft=CreateTimer(10)
   Type Buliga
      Field HP
   End Type
  CrBuligs(5)
   For OoO.Buliga = Each Buliga
      HdlTec=Handle(OoO)
      OoO\HP=Rand(1,100)
   Next
Repeat
   WaitTimer(Ft)
   If HdlTec<HdlMax
      While Not HdlTec=HdlMax
         jjj.Buliga=Object.Buliga(HdlTec)
         jjj = After jjj
         If Handle(jjj)
            HdlTec=Handle(jjj)
            jjj\HP=Rand(1,100)
         EndIf
      Wend
   Else 
   CrBuligs(2)
   Print HdlMax
   Print HdlTec
   EndIf
   
If KeyHit(1) Then Quit=True
Until Quit
Function CrBuligs(Count%)
 Local bbb
 For bbb=1 To Count%
    NewBulg.Buliga=New Buliga
    HdlMax=Handle(NewBulg)
    NewBulg\HP=100
 Next
End Function
Перебор не с первого элемента находится в цикле Repeat>Until.
Сообщение от CRASHER Посмотреть сообщение
Такое ощущение что это просто и часто используется.
Ну как бы сказать, это используется часто, особенно если делаеш сервер)))(ну в моем случае), но там если допускаеш ошибку то долго ее искать, поэтому иногда это сложно)
(Offline)
 
Ответить с цитированием