|
|
|
Как сделать Асоциативный многомерный массив
|
|||
|---|---|---|---|
|
#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?fid=58&msg=39986701&tid=2038078]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
185ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 479ms |

| 0 / 0 |
