Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизDynArray in procedure Найти похожие ветки
← →
Чародей © (2006-02-18 18:09) [0]Как передать в процедуру в качестве параметра динамический массив и получить возможность изменять его размер. В следующем коде ошибка Incompotible types.
procedure TP(a:array of longint);
begin
SetLength(a,2);
end;
Почему?
← →
Джо © (2006-02-18 18:10) [1]
type
TLongArray = array of Longint;
procedure TP(a:TLongArray);
begin
SetLength(a,2);
end;
← →
Джо © (2006-02-18 18:11) [2]> Почему?
Потому, что в твоем варианте кода это не динамический массив. Это так называемый открытый массив, open array.
← →
Palladin © (2006-02-18 18:13) [3]Type
TArrayOfLongint=Array of Longint;
procedure TP(var a:TArrayOfLongint);
begin
SetLength(a,2);
end;
← →
Джо © (2006-02-18 18:18) [4]> [3] Palladin © (18.02.06 18:13)
var или не var — на сей счет можно гадать, так как прямых указаний на необходимость этого не было ;)
← →
Чародей © (2006-02-18 18:19) [5]<off>
нда массив не катит нам нужен МАССИВ.
</off>
Спасибо
← →
Джо © (2006-02-18 18:21) [6]>Чародей ©
> нда массив не катит нам нужен МАССИВ.
?
← →
Palladin © (2006-02-18 18:25) [7]
> Джо © (18.02.06 18:18) [4]
ну в принципе да...
> нда массив не катит нам нужен МАССИВ.
можно и такоеtype
TLongARRAY = ARRAY of Longint;
procedure TP(a:TLongARRAY);
begin
SetLength(a,2);
end;
пойдет?
← →
Чародей © (2006-02-18 18:31) [8]
> type
> TLongArray = array of Longint;
Я никогда не использовал такие вещи, потому что считаю, что это тавтология. И смысла в таких конструкциях не вижу.
← →
Джо © (2006-02-18 18:33) [9]> [8] Чародей © (18.02.06 18:31)
>
> > type
> > TLongArray = array of Longint;
>
> Я никогда не использовал такие вещи, потому что считаю,
> что это тавтология.
А компилятор считает иначе.
>И смысла в таких конструкциях не вижу.
Меняй работу.
← →
Palladin © (2006-02-18 18:42) [10]
> И смысла в таких конструкциях не вижу.
тогда почитай справку по open array, думаю после этого увидишь...
← →
McSimm © (2006-02-18 18:43) [11]> [8] Чародей ©
Возможно кому-то и интересно узнать что вы считаете тафталогией и в чем вы не видите смысла. Но все же не стоит писать это здесь - тут люди в основном учатся, вдруг по неопытности подумают, что вы что-то умное написали.
:)
← →
Чародей © (2006-02-18 20:36) [12]
> McSimm © (18.02.06 18:43) [11]
> тафталогией
таВтОлогия
Прочитал про open array всё что нашел в справке, и отличие от dynamic я вроде понял, но не нашел ни одного примера, где динамические массивы не могли бы быть использованы, по отношению к открытым.
← →
Джо © (2006-02-18 20:44) [13]> [12] Чародей © (18.02.06 20:36)
> Прочитал про open array всё что нашел в справке, и отличие
> от dynamic я вроде понял, но не нашел ни одного примера,
> где динамические массивы не могли бы быть использованы,
> по отношению к открытым.
Еще раз и по-русски, пожалуйста.
← →
Чародей © (2006-02-18 20:51) [14]
> Еще раз и по-русски, пожалуйста.
???
-------
Покажите хоть один пример где использование открытого массива имеет хоть какие-то преимущества, перед использованием там же динамического массива
← →
Palladin © (2006-02-18 20:51) [15]тогда простой вопрос: в чем оно заключается? отличие?
← →
Джо © (2006-02-18 21:01) [16]> [14] Чародей © (18.02.06 20:51)
> Покажите хоть один пример где использование открытого массива
> имеет хоть какие-то преимущества, перед использованием там
> же динамического массива
type
TLongArray = array of Longint;
procedure TP(a:TLongArray);
begin
...
end;
...
TP ([10,20,30]);
← →
Джо © (2006-02-18 21:02) [17]> [16] Джо © (18.02.06 21:01)
Не то объявление скопипастил. Демонстрировал open array, т.е:procedure TP(a:array of longint);
← →
Palladin © (2006-02-18 21:08) [18]
> имеет хоть какие-то преимущества
ты не понял еще что ли, для тебя дело не в приемуществе, а в синтаксисе, если ты объявляешь как procedure a(b:array of integer) то b считается open array, а не dynamic array
← →
Palladin © (2006-02-18 21:12) [19]соответственно твое высказывание о таВтОлогии является абсолютно некорректным, в рамках форума, который все таки посвящен Delphi, и может направить юные умы в сторону неверного мировозрения применительно к тому же Delphi, о чем и сказал тебе McSimm :)
← →
Чародей © (2006-02-18 21:14) [20]Т.е. преимущества зключаются только в возможности использования констант. Но ведь это скорее исключение из правил чем правило, так как в реальных ситуациях данные в дольшинстве случаев получаются динамически.
← →
McSimm © (2006-02-18 21:37) [21]Примеров много, например функция Format().
← →
Чародей © (2006-02-18 21:49) [22]Вобщем смысл понял, всем большое спасибо за помощь.
(хотя насчет тавтологии я останусь при своем мнении, можно было как-то иначе сделать различия :)
← →
Джо © (2006-02-18 22:08) [23]> [20] Чародей © (18.02.06 21:14)
> Т.е. преимущества зключаются только в возможности использования
> констант. Но ведь это скорее исключение из правил чем правило,
> так как в реальных ситуациях данные в дольшинстве случаев
> получаются динамически.
Нет, опять неправильно понял. Синтаксис позволяет использовать НЕ только константы.
← →
Джо © (2006-02-18 22:08) [24]> [22] Чародей © (18.02.06 21:49)
> (хотя насчет тавтологии я останусь при своем мнении, можно
> было как-то иначе сделать различия :)
За чем дело стало? Напиши собственный компилятор без указанных недостатков.
← →
Джо © (2006-02-18 22:10) [25]Мое мнение таково, что, прежде чем выражать свои претензии к синтаксису языка, необходимо выучить хотя бы основы этого языка. А то смешно выглядит, ей Богу.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c