Другие языки программирования и технологии
Массив в Delphi
Пишу программу, рассчитывающую по простому алгоритму простые числа и добавляющую их в список. Доходило до того, что в списке находилось около 10 000 найденных простых чисел. При этом для вывода использовал обычный TMemo, из которого список чисел мог копировать куда угодно. Хочу немного модернизировать алгоритм, и для его ускорения хорошо бы воспользоваться массивом, чтобы избавиться от постоянной конвертации числа в строку для занесения в TMemo. Но я не могу сказать, какого размера должен быть массив, т.к. могу внести туда и 3 числа, и 3 000. Как я могу использовать массив с неопределенным размером? Для работы с ним мне достаточно знать только индекс требуемого элемента, длина массива в работе алгоритма фигурировать не будет
В Delphi есть класс TList туда можно запихивать что угодно и сколько угодно.
TList правда хранит указатели, но ни кто не мешает переписать соответствующие процедуры под целые числа и даже добавить процедуру генерации необходимого к-ва простых чисел
Динамический массив конечно использовать можно, но все равно нужно зарание определять его размерность
TList правда хранит указатели, но ни кто не мешает переписать соответствующие процедуры под целые числа и даже добавить процедуру генерации необходимого к-ва простых чисел
Динамический массив конечно использовать можно, но все равно нужно зарание определять его размерность
я использую компонент Dev Exspress - TdxMemData (DB в памяти) создаю поле типа Float - и толкай числа. работай как обычной базой. Без проблем
Можно по записям перемещатся..
Можно по записям перемещатся..
честно не знаю есть ли такое понятие в delphi (но думаю есть) , в с++ это реализуется векторами
Vadim Vatulin (Г. Владимир)
Не сталкивался с таким (работаю как придется, для себя) в Delphi, но название вполне логично сопоставляется с тем, что я хочу получить)
Вам надо применять TList, правда он не удобен тем что не типизирован.
В основе всех классов коллекций лежит массив, и при нехватке места он автоматически увеличивается до бОльших размеров.
Скажем, в C# есть List<t> способный хранить коллекцию данных любого типа без необходимости работы с указателями. Хотя принцип меняется автоматически - для объектов применяются указатели на них, а для чисел применяются просто значения без ссылок.
Кроме того в C# есть Stack<t>, Queue<t>, ObservableCollection<t>, Dictionary<t,k> и их аналоги. Каждая коллекция реализует обобщённые интерфейсы, таким образом например можно с разными коллекциями работать прозрачно через тот же IList интерфейс, или через типизированный IList<t>.
Почитайте про коллекции в Delphi, скорее всего лучше ознакомиться со всеми вариантами. Должны быть альтернативы какие я описал применительно к C#.
В основе всех классов коллекций лежит массив, и при нехватке места он автоматически увеличивается до бОльших размеров.
Скажем, в C# есть List<t> способный хранить коллекцию данных любого типа без необходимости работы с указателями. Хотя принцип меняется автоматически - для объектов применяются указатели на них, а для чисел применяются просто значения без ссылок.
Кроме того в C# есть Stack<t>, Queue<t>, ObservableCollection<t>, Dictionary<t,k> и их аналоги. Каждая коллекция реализует обобщённые интерфейсы, таким образом например можно с разными коллекциями работать прозрачно через тот же IList интерфейс, или через типизированный IList<t>.
Почитайте про коллекции в Delphi, скорее всего лучше ознакомиться со всеми вариантами. Должны быть альтернативы какие я описал применительно к C#.
Похожие вопросы
- Подскажите на счет массива в Delphi
- Придумайте задачку на массив в delphi (pascal)
- Двумерный массив - Delphi
- Delphi помощь с массивами
- Delphi - Сортировка массива и вывод его в стринг грид
- Components в Delphi. при защите лабораторной возник вопрос... конкретно для Delphi. Что есть массив Components?
- Согласны с этим - Глубинные причины ненависти к Delphi/Pascal ?
- (delphi) Я заношу в массив ссылки на записи. Как получить доступ к полям записи?
- Delphi:Прочитал, что если при динамическом создании компонента если указать Name объекта, то в последующем можно ->
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
На счет TList, я думал (не знаю, почему) что в него можно только строки писать. Т.е. можно записывать в него real / integer без inttostr() и floattostr() а так же подставлять элементы списка в непосредственно в расчеты?