|
|
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
Есть класс такого вида Код: pascal 1. 2. 3. 4. 5. 6. 7. Хочу в цикле for-in пробежаться по всем элементам списков FList1_1, FList1_2, FList1_3. Написать энумератор не проблема. Проблема - как его создавать? Реализовать GetEnumeratorу самого TMyClass считаю не совсем правильным, т.к. класс хранит разные списки. Есть мысль создать фейковое поле и у него реализовать энумератор Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. но идея мне не нравится. Может можно энумератор создать вручную? Типа такого Код: pascal 1. 2. 3. 4. 5. 6. 7. С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 15:56:40 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 16:12:37 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, можно, можно и рекордом на стеке для быстроты. А что не так - пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 16:15:01 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey?Это понятно. Но это еще более громоздко чем с фейковым полем. Все портянки - пользователю кода Bred eFeMА что не так - пробовал?Не понял фразы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 16:26:39 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, спрашиваю, что не получилось, если уже делал. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 16:42:05 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Посмотри реализацию а Rapid.Generics. Или в стандартной Generics.Collections ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 16:48:22 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Но это еще более громоздко чем с фейковым полем. Все портянки - пользователю кода Тогда так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Фейковый тип и свойство этого типа. Пользователь будет писать только: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 16:53:50 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyТогда так:Спасибо. Так и сделал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 18:03:01 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
white_nigger может здесь что полезное найдешь... С интерфейсами интересная идея ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 18:27:15 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
SuperList:Array [0..4] of TList не подойдет? А в конструкторе можно задать FList1_1:=SuperList[0], FList1_2:=SuperList[1] и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 21:01:16 |
|
||
|
Энумераторы
|
|||
|---|---|---|---|
|
#18+
bk0010SuperList:Array [0..4] of TList не подойдет?Нет. У меня вложенные листы, на самом деле, принадлежат не самому классу, а его объектным полям. А один лист принадлежит самому классу. Вот все это хотелось перебрать одним циклом. Т.е. упростить такой код Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:37:09 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39483970&tid=2042045]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 185ms |
| total: | 426ms |

| 0 / 0 |
