![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго времени суток! Есть база данных, в которой каждому объекту присваивается категория, но число категорий ограничено массивом.Задача: необходимо сделать чтобы количество этих категорий было динамическим и их конец ничем не определялся (например, количество вводится с консоли). Эскпериментировал с SetLenght, но что-то пошло не так..
|
#2
|
||||
|
||||
![]() В каком месте вы экспериментировали? Единственное упоминание динамического массива в описании типов TArr.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() Я узрел только GroupArr : array [0..8] of string[20];, что вроде как по описанию проблемы и должно быть вроде как динамически. Но этот статический массив гвоздями прибит к категориям в процедуре заполнения этих категорий. Экспериментов я не увидел.
PS: форматирование вырвиглазно. Но я сегодня добрый и потому укажу направление: Код:
type DataArray<T> = record Data: array of T; procedure Append(const Value: T); function Count: integer; end; { DataArray<T> } procedure DataArray<T>.Append(const Value: T); begin SetLength(Data, length(Data) + 1); Data[high(Data)] := Value; end; function DataArray<T>.Count: integer; begin result := length(Data); end; Использование: Код:
procedure TForm1.FormCreate(Sender: TObject); var data: DataArray<string>; begin data.Append('Alpha'); data.Append('Beta'); Caption := IntToStr(data.Count) + ': ' data.Data[0] + ' & ' + data.Data[1]; end; Последний раз редактировалось M.A.D.M.A.N., 30.03.2015 в 14:41. |
#4
|
||||
|
||||
![]() ![]() Первый раз вижу такое описание и ведь компилируется. Я так понимаю, это какое-то хитрое расширение позволяющее делать структуру с динамическим типом поля? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 30.03.2015 в 19:58. |
#5
|
|||
|
|||
![]() Цитата:
T? Так это ведь дженерики. Подробнее тут: https://sergworks.wordpress.com/2014...ces-in-delphi/ |
#6
|
||||
|
||||
![]() Веришь, но понятие то я это слышал, а вот на практике ни разу не сталкивался. Для чего и как его прилепить в своих проектах пока даже и не соображу.
![]() Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#7
|
|||
|
|||
![]() Цитата:
Здорово экономит время-))) Вместо наследников от TList - TList<T> С итератором. Или вместо самописных хэштаблиц - TDictionary. Красота. |