|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
приведение типов открытых массивов
Неприятно был удивлен, что типы из сабжа неприводимы...
Код:
class function TMSDataSetUtils.GetArrayOfDataSetsAsObj(const ADataSets: array of Tobject): TArrayOfObjects; ... class function TMSDataSetUtils.GetArrayOfDataSets(const ADataSets: array of TCustomMSDataSet): TArrayOfMSDataSets; begin // Result := GetArrayOfDataSetsAsObj(ADataSets); //<-- E2008 Incompatible types end; как лечится? Последний раз редактировалось M.A.D.M.A.N., 09.10.2013 в 07:57. |
#2
|
|||
|
|||
открытый массив и динамический совместимы только в одну сторону — динамический массив можно передавать, как открытый.
А вот из открытого сделать динамический почему-то, действительно, не даёт (( Это тем более странно, что дельфи умеет делать и более сложные вещи — присваивание variant-массива динамическому и наоборот |
#3
|
|||
|
|||
Цитата:
А сама передача массива тут ни при чём. Можно попробовать хак в виде явного незащищённого каста: Код:
Result := TArrayOfMSDataSets(GetArrayOfDataSetsAsObj(ADataSets)); Код:
TArrayOfObjects(Result ):= GetArrayOfDataSetsAsObj(ADataSets); Проблема то хоть решилась ? А то я тут чутка некрю. Последний раз редактировалось phomm, 08.10.2013 в 08:45. |