![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
Что это? DataArray<T> Первый раз вижу такое описание и ведь компилируется. Я так понимаю, это какое-то хитрое расширение позволяющее делать структуру с динамическим типом поля? Последний раз редактировалось Страдалецъ, 30.03.2015 в 19:58. |
|
#5
|
|||
|
|||
|
Цитата:
T? Так это ведь дженерики. Подробнее тут: https://sergworks.wordpress.com/2014...ces-in-delphi/ |
|
#6
|
||||
|
||||
|
Веришь, но понятие то я это слышал, а вот на практике ни разу не сталкивался. Для чего и как его прилепить в своих проектах пока даже и не соображу.
![]() |
|
#7
|
|||
|
|||
|
Цитата:
Здорово экономит время-))) Вместо наследников от TList - TList<T> С итератором. Или вместо самописных хэштаблиц - TDictionary. Красота. |