Можно ли хранить один массив в другом массиве с помощью Delphi? Да. Простейший способ реализовать это следующим образом:
//Standard one dimensional array of Strings
AMyArray: Array[0..5] of String;
//Array containing multiple Standard one dimensional arrays
//Or in other word two dimensional array
MYArrayColection: Array[0..4] of AMyArray;
Примечание для того, чтобы добиться того, что вы wan't ваш один одномерный массив должен содержать 6 элементов. Первый элемент хранит имя вашего лица. Следующие пять магазинов имена его/ее друзей
Но это плохой дизайн. Зачем?
Если мы посмотрим на ваш пример, Чарли, Том и Хари, у всех может быть Джейн как жареная. Это означает, что вы будете хранить свое имя в миллион раз и делать это, потребляя больше памяти.
Теперь с небольшим количеством pepole и smal количество firends это не создает проблемы, но когда у вас большое количество pepole с большим количеством друзей (что вам может понадобиться позже), это может стать реальной проблемой, поскольку вы можете быть из-за этого теряется много мнений.
Сначала вместо хранения информации о лицах в строке хранят ее в записи. Эта запись должна иметь поле «Имя» для хранения имен людей и массива целых чисел для хранения дружеских соединений. Почему массив целых чисел?
Станьте следующим, что вам нужно сделать, это создать массив записей TPerson, чтобы хранить записи pepole. Как только у вас есть это, вы сначала заселяете массив pepole всеми доступными pepole, но в это время вы по-прежнему не заполняете информацию о своих друзьях.
После того, как вы заполнили массив pepole, вы начинаете вводить информацию об увольнении для каждого человека. Но вместо сохранения имени друзей вы просто храните индекс, в котором этот друг хранится в массиве pepole.
Так что код это будет выглядеть примерно так:
//Record used to store information about individual person
TPerson = record
//Persons name field
Name: String;
//Array storing index references to persons friends
Friends: Array[0..4] of Integer;
end;
//Array storing multiple person records
Pepole: Array[0..4] of TPerson;
Это, как вы получите имя первого человека, хранящегося в pepole массиве:
PersonsName := Pepole[0].Name;
Это, как вы бы получить имя второго друга вашего первого человека, хранящегося в массиве pepole
SecondFriendsName := Pepole[Pepole[0].Friends[1]].Name;
Этот вызов может быть немного сложнее понять.
Код внутри квадратных квадратных скобок верхнего колонтитула возвращает индексный номер знакомой записи, которую мы ищем.
Да, это возможно. Возможно, с записью, которая держала человека, а также их друзей. Затем массив из этих записей. Или, возможно, общий «TList». Или, возможно, какая-то другая структура. Вид зависит от того, что вы намерены делать с структурой данных. –
Или простой старый многомерный массив. –
@KenWhite Итак, 'arr [0] [0]' является человеком, а 'arr [0] [1]' является первым другом, 'arr [0] [2]' вторым другом и так далее. Это не выявляет сильной разницы между человеком и другом. –