Главная страница
    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.012 c
9-1125932402
Postgai
2005-09-05 19:00
2006.03.05
Сайты про делфю


1-1138383597
guitarist
2006-01-27 20:39
2006.03.05
Компонент за пределами формы


1-1138973753
DUDAS
2006-02-03 16:35
2006.03.05
выравнивание по вертикали в DBGrid


10-1115098982
zafar
2005-05-03 09:43
2006.03.05
Помогите с OLE !!!!


2-1140413817
nap<>
2006-02-20 08:36
2006.03.05
TEhLib





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский