![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте, уважаемые форумчане.
Опишу задачу: есть несколько массивов разных типов, например, массив строк и массив целых чисел Код:
var integerArray: array of integer; stringArray: array of string; есть общие функции для работы с ними: задать размер массива, добавить новый элемент в массив, удалить элемент массива, отобразить все элементы массива и т.д. сейчас я это делаю очень тупо: Код:
procedure setLengthArray(arrayName:string, len:integer); begin if arrayName='integerArray' then setlength(integerArray,len); if arrayName='stringArray' then setlength(stringArray,len); end; procedure deleteFirst(arrayName:string); begin if arrayName='integerArray' then delete(integerArray[0]); if arrayName='stringArray' then delete(stringArray[0])); end В общем, если массивов не два а двадцать, код растягивается неимоверно. Обратите внимание, что операции с массивом однотипные и повторяются копипастом... т.е. Вопрос такой: как обратиться к массиву, зная его имя... например, передать имя массива в функцию, в которой можно будет делать однотипные операции... возможно, есть и альтернативные подходы... Надеюсь на помощь. ![]() |
#2
|
||||
|
||||
![]() Используй array of variant. Тогда можноо вообще только один массив иметь, анализировать через VarType.
А лучше коллекции использовать. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
![]() а зачем вообще так делать (про setLengthArray и deleteFirst)?
Пишу программы за еду. __________________ |
#4
|
|||
|
|||
![]() 2 NumLock так делать незачем, это абстрактные примеры, иллюстрирующие мое незнание...
2 M.A.D.M.A.N. поподробнее, пожалуйста, лучше с кодом... ![]() |
#5
|
|||
|
|||
![]() по поводу varType он только стандартные типы определяет?
Цитата:
Это не совсем то, что нужно... В примерах я говорил о типах целое и строка для простоты, на самом деле у меня описаны классы объектов. Массивы типа: массив стульев, массив столов и т.д. массивы объектов... такой подход с variant прокатит? |
#6
|
||||
|
||||
![]() У тебя там будут экземпляры классов? В принципе array of TObject пойдет.
А вообще, для хранения классов есть листики спецовые, TObjectList называется. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
|||
|
|||
![]() 2 M.A.D.M.A.N. TObjectList кажется то, что нужно...
можно все экземпляры классов засунуть в один список, через свойство list.Items[i].ClassType.ClassName определять их тип... буду много думать... ![]() |
#8
|
||||
|
||||
![]() ClassName - это класс функция, она может быть вызвана как с объекта, так и с класса, не обязательно делать так: "ClassType.ClassName".
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |