powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как сделать Асоциативный многомерный массив
25 сообщений из 75, страница 2 из 3
Как сделать Асоциативный многомерный массив
    #39986277
GrigoriyFomin
меня полгода гнобили, теперь я буду новобранцев гнобить.


Это так не работает, если писюлька маленькая, тебя новобранцы на пукан оденут,и отправят по полю без трусиков клещей ловить удочкой на обед.


GrigoriyFomin
в дельфе из коробки решения нет, но вместо развития дельфей до уровня современных языков, вы предлагаете костыли по принципу - из того что было, то и налепила.


Я могу в Delphi юзать чистые массивы PHP со всеми плюшками без инициализации PHP интерпретатора если он не нужен. Прирост производительности будет больше чем у всего, что есть в Delphi
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986281
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GrigoriyFomin
ВсеРазумный, это похоже на дедовщину - меня полгода гнобили, теперь я буду новобранцев гнобить.
переведу для тех, кто не служил - раз я заморочился и решил эту олимпиадную задачу - пусть теперь любой доразовьется до моего уровня (я - ж бог программирования!!!) и попробует ее также решить!

К чему это - в пхп это делается красиво и удобно, в дельфе из коробки решения нет, но вместо развития дельфей до уровня современных языков, вы предлагаете костыли по принципу - из того что было, то и налепила. Вот только не надо тут упоминать в суе дженерики, tdictionry<> и прочие прокладки. Дельфи в данном случае слился - факт. Опровергните красивым кодом, плз, дабы посыпать седины дельфийского программера с опытом 20 лет пеплом.
Что навеяло - вкладка Win3.1 - то есть в дельфях главное поддержать совместимость с Win3.10 90 какого-то года, нежели внедрять новые течения современных языков! А по сути - FireDac - купили сторонний, FireMonkey - энтузиазмский проект, че осталось? вкладки Win32 и win 3.1

"Моск пэхапэшника" - (с).
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986289
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

ПхпГМ
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986318
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
experience
Ассоциативней не бывает
http://www.minimdb.com/download/minimonowin64list.html


а цена...
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986338
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
Без ограничений там.

Это не многомерный массив, а вложенный.
Многомерных в PHP нет.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986392
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin
К чему это - в пхп это делается красиво и удобно, в дельфе из коробки решения нет,
Как-то странно сравнивать компилируемый и интерпретируемые языки.

Хорошо, Делфи отстой. Приведите пример решения на Java. Напомню требования

1. Ключами массива могут быть строки и/или числа
2. Строковой индекс, который может быть преобразован к числу, должен быть преобразован к числу
3. Массив должен сохранять порядок добавления элементов
4. Должен быть быстрый поиск по ключу
5. Элементами массива могут быть любые типы, в том числе и массивы
6. Все преобразования типов должны происходить под капотом
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986425
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.
<?php
$fruits = array ( "fruits"  => array ( "a" => "апельсин",
                                       "b" => "банан",
                                       "c" => "яблоко"
                                     ),
                  "numbers"   => array ( 1,
                                       2,
                                       3,
                                       4,
                                       5,
                                       6
                                     ),
                  "holes"   => array (      "первая",
                                       5 => "вторая",
                                            "третья"
                                     )
                );

// Несколько примеров доступа к значениям предыдущего массива
echo $fruits["holes"][5];    // напечатает "вторая"
echo $fruits["fruits"]["a"]; // напечатает "апельсин"
unset($fruits["holes"][0]);  // удалит "первая"

// Создаст новый многомерный массив
$juices["apple"]["green"] = "good"; 
?>

...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986449
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_

6. Все преобразования типов должны происходить под капотом

Не согласен с требованием.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986452
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если непонятно, могу переставить слова: в PHP нет многомерных массивов, есть только вложенные (рекурсивные).
Если не знаете, что такое многомерные массивы — посмотрите фортран.
Многомерный массив — это a[i1,i2,...], а не a[i1][i2]...
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986458
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь как-то с самого начала топика идет борьба терминологий. Много-мерный ключ это так.
Если

Код: c#
1.
dict["mayton"] ="ID_01"



то это одномерный справочник пользователй sql.ru где ключ - одна строка.

А вот - многомерный

Код: c#
1.
geo_dict[125,6] ="Детский садик"



В географическом справочнике в квадрате 125,6 лежит некое описание что это - детский садик.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986464
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Много-мерных справочников - скорее всего не бывает. Никто их так не классифицирует.
Но есть просто справочники где Value - нетипизированное и вы можете в Value положить
любой объект в т.ч. строку и число и такой-же еще справочник.

Это уже 100 лет существует и в C#/Java но никто это не обзывает много-мерным и ассоциативным.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986470
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Много-мерных справочников - скорее всего не бывает.

Разумеется, это крайне неэффективно (по расходу памяти) и никому не нужно.
А вот многомерные массивы иногда бывают нужны.
Просто в PHP некоторые структуры названы массивами (и ведут себя как массивы), вот студенты и привыкают это название проецировать на остальные случаи.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986506
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант реализация ассоциативных массивов
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=868
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986527
Alibek B.
Если непонятно, могу переставить слова: в PHP нет многомерных массивов, есть только вложенные (рекурсивные).
Если не знаете, что такое многомерные массивы — посмотрите фортран.
Многомерный массив — это a[i1,i2,...], а не a[i1][i2]...


Так это одно и тоже, просто разный подход к обращению.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986528
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
GrigoriyFomin
К чему это - в пхп это делается красиво и удобно, в дельфе из коробки решения нет,
Как-то странно сравнивать компилируемый и интерпретируемые языки.

Хорошо, Делфи отстой. Приведите пример решения на Java. Напомню требования

1. Ключами массива могут быть строки и/или числа
2. Строковой индекс, который может быть преобразован к числу, должен быть преобразован к числу
3. Массив должен сохранять порядок добавления элементов
4. Должен быть быстрый поиск по ключу
5. Элементами массива могут быть любые типы, в том числе и массивы
6. Все преобразования типов должны происходить под капотом

В дельфи есть, не совсем, но почти такое.
Конкретно - у меня.
Словарь для хранения данных типа Variant. То есть, может и вариантные массивы.
Ключом является строка. Доступ по ключу быстрый, ибо словарь. На основе (наследник) TDictionary из библиотеки Fundamentals,
При этом сохраняется возможность доступа в порядке добавления. Быстрее, чем TStringList.
Интерфейс:
Код: pascal
1.
2.
3.
4.
5.
6.
m['колбаса'] := 'Колбаса';
m['возраст'] := 27;
if m.exists('колбаса') then
  ShowMessage(m['колбаса']);
ShowMessage(VarToStr(m.ValByIndex(1))); // 27
ShowMessage(m.KeyByIndex(1)); // 'возраст'


Экспортирован в движок фастрепорта для ручного кодирования сложных отчетов в скрипте.
Произвольные типы не поддерживает, естественно, но поддерживает всё, что реализует разработчик. :)
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986529
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВсеРазумный
Alibek B.
Если непонятно, могу переставить слова: в PHP нет многомерных массивов, есть только вложенные (рекурсивные).
Если не знаете, что такое многомерные массивы — посмотрите фортран.
Многомерный массив — это a[i1,i2,...], а не a[i1][i2]...


Так это одно и тоже, просто разный подход к обращению.

Фиквам это, а не одно и тоже.
В Delphi многомерный массив занимает непрерывную область памяти, соответственно, позволяя манипулировать с такой памятью. А массив массивов - непрерывная область указателей на другие массивы.
Также разница в управлении памятью.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986530
ъъъъъ,

Какая разница что там под капотом, если важен внешний вид
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986531
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ

Экспортирован в движок фастрепорта для ручного кодирования сложных отчетов в скрипте.

А Фастовского TfrxVariable не хватает ?
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986532
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВсеРазумный
ъъъъъ,

Какая разница что там под капотом, если важен внешний вид


Особенно если и внешний вид разный.
Ты пьяный, что ли.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986538
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

фастовский - он медленный (ну это ладно), в некоторых случаях:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function TfrxVariables.IndexOf(const Name: String): Integer;
var
  i: Integer;
begin
  Result := -1;
  for i := 0 to Count - 1 do
    if AnsiCompareText(Name, Items[i].Name) = 0 then
    begin
      Result := i;
      break;
    end;
end;


и в каких-то версиях (сейчас не знаю, может уже нет) сохранял значения созданных пересенных в шаблоне, что иногда веселило в ненеожиданные моменты... :)
И почему-то я не смог найти способ определить - есть ли такая переменная со значением null, или нет, ну вот надо было.

И ещё что-то. Потом плюнул и создал свой, такой, как пожелала моя левая пятка в тот момент времени... например, доступ по индексу (в порядке добавления).
И вообще я использую его и в проектах без фастрепорта - точно одним TfrxVariables не обойтись было... :)
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986541
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986545
_Den_Z_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ, А можете кейс использования переменных описать ?
Что там храниться, и как, в таком количестве, чтобы поиск в лоб сильно тормозил работу.
Вопрос уже поднимался как-то, но до реальных кейсов не доходило. Нужно понять, что тут лучше делать, переделывать переменные или вводить новую сущность в виде словаря.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986546
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Den_Z_,

да ну. Меня уже водили мордой по батарее, что скрипты большинству не нужны, поэтому редактор убогий и отладчик.
Не стану отвлекать - глядишь, силы на редактор будут направлены, или на отладчик.

ЗЫ: дошло, "реальные кейсы" == "ну и нах.. вам это надо"...
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986549
_Den_Z_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ,

Ну вот, уже в рукобатарея-прикладстве обвиняют
А я всего-то поинтересовался, как используете.
...
Рейтинг: 0 / 0
Как сделать Асоциативный многомерный массив
    #39986550
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Den_Z_,
вспомнил, откуда это у меня пошло. Что-то группировал/собирал, попытался использовать вариантные массивы,все было очень плохо.

Загрузил демку VCL FR6, посмотреть. Все как раньше.

VarArrayCreate() - есть, но пользоваться созданными массивами все также неудобно.
Как узнать размерность и границы созданного массива?
Как изменить элемент вложенного массива без полного копирования всего вложенного массива?
...
Рейтинг: 0 / 0
25 сообщений из 75, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как сделать Асоциативный многомерный массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]