Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.013 c
1-1138610482
rolex
2006-01-30 11:41
2006.03.05
Как избавиться в ListView от мерцания при прокрутке?


2-1140265408
BaBayka007
2006-02-18 15:23
2006.03.05
Цикл?.... а вот как - что-то совсем у меня ни как.....:)


3-1137070389
UnDISCOvery
2006-01-12 15:53
2006.03.05
Запрос SQL к Access - как ускорить работу?


2-1140067495
Canopus
2006-02-16 08:24
2006.03.05
Как активировать компоненту


15-1139682940
alexdid
2006-02-11 21:35
2006.03.05
VMWARE windows xp prof sp2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский