|
|
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Всем привет. В PHP и других языках есть асоциативные массивы. С ними очень удобно работать. А вот в Delphi из коробки их нет. В нете есть несколько подобий их реализации, но что-то у меня ни один не заработал (Rad Studio 10.3) Может вы знаете какую нибудь реализацию асоциативных массивов в Delphi? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 08:45 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Ассоциативный массив - это ключ + значение? Разве такого в Delphi нет? А дженерики? TCollection, TList, TDictionary? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 09:03 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
NikolasGood, JSON, TStringList ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 13:23 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Многомерный это как? В ключе надо чтоб стояло 2 параметра? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 14:07 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
X11, В PHP массивы это Ключ (Строка \ Число) => Любое значение. С сохранением порядка добавления. И это очень быстро работает, особенно в связке с миллион функций для сортировки этих массивов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 15:40 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
mayton Многомерный это как? В ключе надо чтоб стояло 2 параметра? Без ограничений там. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 15:44 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Если надо массив произвольной структуры, то стоит использовать XSuperObject. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 16:04 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный В PHP массивы это Ключ (Строка \ Число) => Любое значение. в Дельфи есть Variant ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 16:10 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
X11, Лучше уж TValue чем этот Variant ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 16:12 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, TValue - тормоз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 16:13 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
да, тоже неплохо http://delphi2010.ru/детально-о-tvalue/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 16:14 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
rgreat, Не TValue тормоз, а дженерики тормознутые. Variant 0.000268 6,69692879491417E304 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. TValue 0.000365 6,69692879491417E304 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Но стоит поменять с AsExtended Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. На прямой вызов AsType<Extended> 0.001695 6,69692879491417E304 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Сразу какие то Цифры огромные в потери вызова Код: 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 17:06 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Пробить отметку ниже 0.000347 не получается никак Код: 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. Слишком низко качественный код оптимизатор генерирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 18:12 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Ассоциативней не бывает http://www.minimdb.com/download/minimonowin64list.html MiniM Embedded Edition (Win64) Content List MiniM Embedded Edition Installer setup the following applications, tools, documentation and additional files: MiniMono Dynamic Link Library for Windows x64 MiniMono Routine Editor MiniMono Global Editor MiniM Collation Editor MiniMono command-line interface MiniMono console interface Initial content of system routines Default empty database file MiniM Language Guide MiniM Advanced Guide Default set of collation files Interface files for C++, Delphi and C# Examples for C++, Delphi and C# JNI module and Java examples ZDEVICE Examples ZDLL Examples Current build release notes MiniMono Uninstaller ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 18:33 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Пробить отметку ниже 0.000347 не получается никак Код: pascal 1. 2. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 18:55 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Так суть в том что, тип может и с первой женой, и со второй, и с парнем за гаражом. Ну ладно. 0.000039 6,69692879491417E304 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 18:58 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, любая древовидная структура данных автору подходит. Возможно подойдет и JSonDocument, XmlDocument но если нужна будет быстрая навигация по известному "path" то надо смотреть какая структура внутри. Не везде хеш-табличка в основе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 19:01 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
mayton, Из самых банальных Код: pascal 1. 2. 3. Код: 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 19:12 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Так суть в том что, тип может и с первой женой, и со второй, и с парнем за гаражом. ВсеРазумный 0.000039 ВсеРазумный Пробить отметку ниже 0.000347 не получается никак ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 19:23 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
rgreat Если надо массив произвольной структуры, то стоит использовать XSuperObject. Выглядит очень круто, я так понимаю это его GitHub https://github.com/onryldz/x-superobject ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 19:24 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Но нативный тип не нужен в задачи, так что он идёт лесом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 19:27 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
NikolasGood, Да, это оно. Достаточно удобная весчь если надо обрабатывать стриктуры типа "кот в мешке". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2020, 21:45 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
NikolasGood Всем привет. В PHP и других языках есть асоциативные массивы. С ними очень удобно работать. А вот в Delphi из коробки их нет. В нете есть несколько подобий их реализации, но что-то у меня ни один не заработал (Rad Studio 10.3) Может вы знаете какую нибудь реализацию асоциативных массивов в Delphi? Может, начать разбираться с возможностями самого Delphi, а не пытаться сделать "так, как в пэхапэ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 00:04 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, Люди привыкли к хорошему, избаловались. А тут им предлагают посидеть на выпуклом месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 00:06 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, это похоже на дедовщину - меня полгода гнобили, теперь я буду новобранцев гнобить. переведу для тех, кто не служил - раз я заморочился и решил эту олимпиадную задачу - пусть теперь любой доразовьется до моего уровня (я - ж бог программирования!!!) и попробует ее также решить! К чему это - в пхп это делается красиво и удобно, в дельфе из коробки решения нет, но вместо развития дельфей до уровня современных языков, вы предлагаете костыли по принципу - из того что было, то и налепила. Вот только не надо тут упоминать в суе дженерики, tdictionry<> и прочие прокладки. Дельфи в данном случае слился - факт. Опровергните красивым кодом, плз, дабы посыпать седины дельфийского программера с опытом 20 лет пеплом. Что навеяло - вкладка Win3.1 - то есть в дельфях главное поддержать совместимость с Win3.10 90 какого-то года, нежели внедрять новые течения современных языков! А по сути - FireDac - купили сторонний, FireMonkey - энтузиазмский проект, че осталось? вкладки Win32 и win 3.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 01:25 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin меня полгода гнобили, теперь я буду новобранцев гнобить. Это так не работает, если писюлька маленькая, тебя новобранцы на пукан оденут,и отправят по полю без трусиков клещей ловить удочкой на обед. GrigoriyFomin в дельфе из коробки решения нет, но вместо развития дельфей до уровня современных языков, вы предлагаете костыли по принципу - из того что было, то и налепила. Я могу в Delphi юзать чистые массивы PHP со всеми плюшками без инициализации PHP интерпретатора если он не нужен. Прирост производительности будет больше чем у всего, что есть в Delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 01:34 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin ВсеРазумный, это похоже на дедовщину - меня полгода гнобили, теперь я буду новобранцев гнобить. переведу для тех, кто не служил - раз я заморочился и решил эту олимпиадную задачу - пусть теперь любой доразовьется до моего уровня (я - ж бог программирования!!!) и попробует ее также решить! К чему это - в пхп это делается красиво и удобно, в дельфе из коробки решения нет, но вместо развития дельфей до уровня современных языков, вы предлагаете костыли по принципу - из того что было, то и налепила. Вот только не надо тут упоминать в суе дженерики, tdictionry<> и прочие прокладки. Дельфи в данном случае слился - факт. Опровергните красивым кодом, плз, дабы посыпать седины дельфийского программера с опытом 20 лет пеплом. Что навеяло - вкладка Win3.1 - то есть в дельфях главное поддержать совместимость с Win3.10 90 какого-то года, нежели внедрять новые течения современных языков! А по сути - FireDac - купили сторонний, FireMonkey - энтузиазмский проект, че осталось? вкладки Win32 и win 3.1 "Моск пэхапэшника" - (с). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 03:08 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, ПхпГМ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 07:29 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 10:17 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Без ограничений там. Это не многомерный массив, а вложенный. Многомерных в PHP нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 11:33 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin К чему это - в пхп это делается красиво и удобно, в дельфе из коробки решения нет, Хорошо, Делфи отстой. Приведите пример решения на Java. Напомню требования 1. Ключами массива могут быть строки и/или числа 2. Строковой индекс, который может быть преобразован к числу, должен быть преобразован к числу 3. Массив должен сохранять порядок добавления элементов 4. Должен быть быстрый поиск по ключу 5. Элементами массива могут быть любые типы, в том числе и массивы 6. Все преобразования типов должны происходить под капотом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 14:29 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Alibek B. Многомерных в PHP нет. А кто это у нас такой умный Пример #14 Рекурсивные и многомерные массивы Код: php 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 15:29 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ 6. Все преобразования типов должны происходить под капотом Не согласен с требованием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 16:34 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Если непонятно, могу переставить слова: в PHP нет многомерных массивов, есть только вложенные (рекурсивные). Если не знаете, что такое многомерные массивы — посмотрите фортран. Многомерный массив — это a[i1,i2,...], а не a[i1][i2]... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 16:41 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Здесь как-то с самого начала топика идет борьба терминологий. Много-мерный ключ это так. Если Код: c# 1. то это одномерный справочник пользователй sql.ru где ключ - одна строка. А вот - многомерный Код: c# 1. В географическом справочнике в квадрате 125,6 лежит некое описание что это - детский садик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 16:54 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Много-мерных справочников - скорее всего не бывает. Никто их так не классифицирует. Но есть просто справочники где Value - нетипизированное и вы можете в Value положить любой объект в т.ч. строку и число и такой-же еще справочник. Это уже 100 лет существует и в C#/Java но никто это не обзывает много-мерным и ассоциативным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 17:05 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
mayton Много-мерных справочников - скорее всего не бывает. Разумеется, это крайне неэффективно (по расходу памяти) и никому не нужно. А вот многомерные массивы иногда бывают нужны. Просто в PHP некоторые структуры названы массивами (и ведут себя как массивы), вот студенты и привыкают это название проецировать на остальные случаи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 17:15 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Вариант реализация ассоциативных массивов http://www.delphikingdom.com/asp/viewitem.asp?catalogid=868 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 20:04 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Alibek B. Если непонятно, могу переставить слова: в PHP нет многомерных массивов, есть только вложенные (рекурсивные). Если не знаете, что такое многомерные массивы — посмотрите фортран. Многомерный массив — это a[i1,i2,...], а не a[i1][i2]... Так это одно и тоже, просто разный подход к обращению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 22:50 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ GrigoriyFomin К чему это - в пхп это делается красиво и удобно, в дельфе из коробки решения нет, Хорошо, Делфи отстой. Приведите пример решения на Java. Напомню требования 1. Ключами массива могут быть строки и/или числа 2. Строковой индекс, который может быть преобразован к числу, должен быть преобразован к числу 3. Массив должен сохранять порядок добавления элементов 4. Должен быть быстрый поиск по ключу 5. Элементами массива могут быть любые типы, в том числе и массивы 6. Все преобразования типов должны происходить под капотом В дельфи есть, не совсем, но почти такое. Конкретно - у меня. Словарь для хранения данных типа Variant. То есть, может и вариантные массивы. Ключом является строка. Доступ по ключу быстрый, ибо словарь. На основе (наследник) TDictionary из библиотеки Fundamentals, При этом сохраняется возможность доступа в порядке добавления. Быстрее, чем TStringList. Интерфейс: Код: pascal 1. 2. 3. 4. 5. 6. Экспортирован в движок фастрепорта для ручного кодирования сложных отчетов в скрипте. Произвольные типы не поддерживает, естественно, но поддерживает всё, что реализует разработчик. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 22:58 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Alibek B. Если непонятно, могу переставить слова: в PHP нет многомерных массивов, есть только вложенные (рекурсивные). Если не знаете, что такое многомерные массивы — посмотрите фортран. Многомерный массив — это a[i1,i2,...], а не a[i1][i2]... Так это одно и тоже, просто разный подход к обращению. Фиквам это, а не одно и тоже. В Delphi многомерный массив занимает непрерывную область памяти, соответственно, позволяя манипулировать с такой памятью. А массив массивов - непрерывная область указателей на другие массивы. Также разница в управлении памятью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 23:07 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 23:11 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ъъъъъ Экспортирован в движок фастрепорта для ручного кодирования сложных отчетов в скрипте. А Фастовского TfrxVariable не хватает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 23:14 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный ъъъъъ, Какая разница что там под капотом, если важен внешний вид Особенно если и внешний вид разный. Ты пьяный, что ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 23:15 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
DimaBr, фастовский - он медленный (ну это ладно), в некоторых случаях: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. и в каких-то версиях (сейчас не знаю, может уже нет) сохранял значения созданных пересенных в шаблоне, что иногда веселило в ненеожиданные моменты... :) И почему-то я не смог найти способ определить - есть ли такая переменная со значением null, или нет, ну вот надо было. И ещё что-то. Потом плюнул и создал свой, такой, как пожелала моя левая пятка в тот момент времени... например, доступ по индексу (в порядке добавления). И вообще я использую его и в проектах без фастрепорта - точно одним TfrxVariables не обойтись было... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 00:00 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
-- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 00:07 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, А можете кейс использования переменных описать ? Что там храниться, и как, в таком количестве, чтобы поиск в лоб сильно тормозил работу. Вопрос уже поднимался как-то, но до реальных кейсов не доходило. Нужно понять, что тут лучше делать, переделывать переменные или вводить новую сущность в виде словаря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 01:52 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Den_Z_, да ну. Меня уже водили мордой по батарее, что скрипты большинству не нужны, поэтому редактор убогий и отладчик. Не стану отвлекать - глядишь, силы на редактор будут направлены, или на отладчик. ЗЫ: дошло, "реальные кейсы" == "ну и нах.. вам это надо"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 02:05 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, Ну вот, уже в рукобатарея-прикладстве обвиняют А я всего-то поинтересовался, как используете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 02:17 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Den_Z_, вспомнил, откуда это у меня пошло. Что-то группировал/собирал, попытался использовать вариантные массивы,все было очень плохо. Загрузил демку VCL FR6, посмотреть. Все как раньше. VarArrayCreate() - есть, но пользоваться созданными массивами все также неудобно. Как узнать размерность и границы созданного массива? Как изменить элемент вложенного массива без полного копирования всего вложенного массива? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 02:31 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Den_Z_ А я всего-то поинтересовался, как используете. Да так же, как в вашем описании из документации, где get/set: что-то собираю/группирую. В контексте скрипта присутствует одна глобальная переменная типа "словарь", или можно создать сколько угодно - чтобы у "переменных" было разное пространство имен. Почти как у вас, только быстро и чтобы переменные не сериализовались всякий раз, когда при разработке ctrl+s жмешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 02:41 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ъъъъъ VarArrayCreate() Вот по этому я против типа variant и топлю за TValue Ибо пока разберёшься, привыкнешь и изучишь. Слишком много времени. А там раз, и пользуешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 02:46 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, Какой ты злой, прям руку по локоть скушаешь,,, лишь бы откусить. И опять мы бредим. Прям по первой ссылке из гугла в FastScript поддерживает все типы массивов: статические (одномерные,многомерные), динамические, вариантные. Вот пример скрипта, использующеготри массива целых чисел, объявленных разным способом: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. А это значит что, что бы узнать размер массива VarArrayCreate надо применить те же самые манипуляции, что и при обычном массиве ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 05:25 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный А это значит что, что бы узнать размер массива VarArrayCreate надо применить те же самые манипуляции, что и при обычном массиве К сожалению, VarArrayCreate единственная зарегистрированная функция. Остальные функций работы с массивом нужно добавлять вручную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 07:54 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
DimaBr, То есть, в fastreport нету совершенно функции Length для всех 3 вариантов. Ну в принципе ладно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 08:30 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ GrigoriyFomin К чему это - в пхп это делается красиво и удобно, в дельфе из коробки решения нет, Хорошо, Делфи отстой. Приведите пример решения на Java. Напомню требования 1. Ключами массива могут быть строки и/или числа 2. Строковой индекс, который может быть преобразован к числу, должен быть преобразован к числу 3. Массив должен сохранять порядок добавления элементов 4. Должен быть быстрый поиск по ключу 5. Элементами массива могут быть любые типы, в том числе и массивы 6. Все преобразования типов должны происходить под капотом LinkedHashMap завезли, а вот Variant нет в дельфи придётся написать LinkedHashMap - что в принципе не так сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 09:05 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) LinkedHashMap завезли, а вот Variant нет в дельфи придётся написать LinkedHashMap - что в принципе не так сложно Завезли более чем 8 лет назад. 2020Г - Придётся написать в Delphi. Звучит абсурдно. Ну и Java разработчики не жалуются на отсутствие Variant. Хороший пример реализация JPHP где есть массивы как в PHP и переменные. И управления типами - точно такое же. И даже массивы хранят свой порядок добавления элементов :D Но язык посредственный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 09:24 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный DimaBr, То есть, в fastreport нету совершенно функции Length для всех 3 вариантов. Ну в принципе ладно. Length есть Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 09:24 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
DimaBr, Ну вот. Развели ор, раньше гор. Хотя и так всё из коробки есть для базового уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 09:26 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный kealon(Ruslan) LinkedHashMap завезли, а вот Variant нет в дельфи придётся написать LinkedHashMap - что в принципе не так сложно Завезли более чем 8 лет назад. 2020Г - Придётся написать в Delphi. Звучит абсурдно. Ну и Java разработчики не жалуются на отсутствие Variant. Хороший пример реализация JPHP где есть массивы как в PHP и переменные. И управления типами - точно такое же. И даже массивы хранят свой порядок добавления элементов :D Но язык посредственный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 09:39 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный DimaBr, Ну вот. Развели ор, раньше гор. Хотя и так всё из коробки есть для базового уровня. Это не я придумывал собственный механизм. Мне TfrxVariable вполне хватает. К сожалению, VarArrayCreate единственная зарегистрированная функция. Остальные функций работы с массивом нужно добавлять вручную из этого набора только VarArrayCreate зарегистрированна Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 09:42 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
DimaBr, Я понимаю что не ты придумал. Я даже знал что есть. Кстати, видел ещё вызов VarArrayOf так что не единственная. Скорее всего там предусмотрена проверка что переменная является массивом. Так что функция VarIsArray не нужна. VarArrayRef тоже не нужна. VarTypeIsValidArrayType и VarTypeIsValidElementType тоже не нужны. VarArrayLock и VarArrayUnlock тоже не нужны. VarArrayAsPSafeArray тоже не нужна. Функции VarArrayGet и VarArrayPut реализованы через [idx] + := val. Так же не нужны DynArrayToVariant и DynArrayFromVariant и опять же реализованы VarArrayLowBound и VarArrayHighBound Больше нечего добавлять. Всё нужное есть. Так что и жаловаться не на что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 09:52 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Кстати, видел ещё вызов VarArrayOf так что не единственная VarArrayOf - не зарегистрированна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 10:03 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
демка 6.5.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 10:08 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
DimaBr, Значит они решили что она не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 10:09 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный и опять же реализованы VarArrayLowBound и VarArrayHighBound На самом деле VarArrayCreate - это не настоящая VarArrayCreate из Delphi. Сюрпайз!!! Фастовская VarArrayCreate создаёт массив размерностью 0..HighBound. Захотел создать массив [3..5] - пиши свою реализацию И узнать нижнюю/верхнюю границу стандартными средствами нельзя. Разработчики считают, что раз создаётся только массивы от НУЛЯ, то и границы массивов определять не нужно (достаточно Length), хотя именно в Lengh написано (Result := VarArrayHighBound(v, 1) - VarArrayLowBound(v, 1) + 1), то есть из верхней границы вычитается нижняя (хотя она же нулевая). По факту, Length работает для всех массивов, а VarArrayCreate - только "собственных" Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Обман кроется в мелочах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 10:25 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 10:39 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
DimaBr, Функция работает так же как и в Delphi, никакого обмана в ней нет. Код: pascal 1. 2. 3. Приведенный код просто копирует параметр с открытым массивом , из array of variant (используемый в скрипте) в array of Integer(который принимает VarArrayCreate). Вот, Low/High действительно не хватает из коробки. Спасибо. ъъъъъ, Спасибо. Т.е. нужна структура быстрого доступа виде Arr['Ключ1', 'Ключ2', ... 'КлючN'] из коробки по аналогии с переменными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 12:02 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Den_Z_ ъъъъъ, Спасибо. Т.е. нужна структура быстрого доступа виде Arr['Ключ1', 'Ключ2', ... 'КлючN'] из коробки по аналогии с переменными. Да в общем-то достаточно одного ключа (один параметр), т.к. всегда склеить строки можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 13:19 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Den_Z_ DimaBr, Функция работает так же как и в Delphi, никакого обмана в ней нет. Значит был не прав. Не допонял для чего такой странный механизм копирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 13:30 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, Понял. Я просто пытаюсь обобщить задачу(с нашей стороны), чтобы ее конкретизировать для реализации. Хотелось бы иметь контейнер, в который можно свернуть, к примеру таблицу, а потом обращаться arr[<Line>, FieldName]. т.к. давно спрашивают об организации пользовательских данных, хранящихся не в БД. Поэтому и спрашивал у вас об использовании, хотелось бы обобщить в универсальное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 13:58 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
_Den_Z_ ъъъъъ, Понял. Я просто пытаюсь обобщить задачу(с нашей стороны), чтобы ее конкретизировать для реализации. Хотелось бы иметь контейнер, в который можно свернуть, к примеру таблицу, а потом обращаться arr[<Line>, FieldName]. т.к. давно спрашивают об организации пользовательских данных, хранящихся не в БД. Поэтому и спрашивал у вас об использовании, хотелось бы обобщить в универсальное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2020, 08:45 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
rgreat ВсеРазумный, TValue - тормоз. http://docwiki.embarcadero.com/Libraries/XE2/en/System.Rtti.TValue Represents a lightweight version of the Variant type. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2020, 11:11 |
|
||
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#18+
Квейд, Это результат моих тестов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2020, 13:59 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2038078]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 486ms |

| 0 / 0 |
