Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> setlength проблема в процедуре, не работает с массивом - параметром 
:(
    Опции темы
СЭНСЭЙ
Дата 18.3.2013, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Почем то в таком коде:
Код

procedure setlength_of_array(id:integer;var a:array of integer);

begin

setlength(a,id);

end;


выдает ошибку - incompatible types;
причем ругается именно на массив a
в чем проблема?
PM MAIL   Вверх
Illusion Dolphin
Дата 18.3.2013, 21:46 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 5
Всего: 63



Вот так будет работать:
Код

type
  T = array of integer;
procedure setlength_of_array(id:integer;var a:T);
begin
setlength(a,id);
end;



В том виде, как есть, это вроде типа "Open array parameters" http://rvelthuis.de/articles/articles-openarr.html . 


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
БелАмор
Дата 19.3.2013, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 10.6.2010
Где: Россия

Репутация: 7
Всего: 17



Небольшое дополнение:

Цитата(Illusion Dolphin @  18.3.2013,  22:46 Найти цитируемый пост)
type
  T = array of integer;

Для большинства простых типов в модуле Types объявлены типы указателей и динамических массивов.
Логичнее пользоваться ими, а не объявлять каждый раз свои типы.
В частности, есть такой:

Код

type
  TIntegerDynArray      = array of Integer;



Это сообщение отредактировал(а) БелАмор - 19.3.2013, 00:11
PM   Вверх
northener
Дата 19.3.2013, 00:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(БелАмор @  19.3.2013,  00:09 Найти цитируемый пост)
Для большинства простых типов в модуле Types объявлены типы указателей и динамических массивов.
Логичнее пользоваться ими, а не объявлять каждый раз свои типы.
В частности, есть такой:

Модуль несколько больше, чем таблица умножения smile
Запомнить все те типы, которые объявлены в нём сложновато. Да и имхо незачем. Объявить свой тип гораздо лучше во многих случаях. Своему типу можно дать символическое имя, которое может многое рассказать о том, что это за тип и для чего он нужен. Ну а компилятору (как вы сами понимаете) разницы никакой.

Это сообщение отредактировал(а) northener - 19.3.2013, 02:54


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 19.3.2013, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



можно же юзать TArray<T>, зачем что-то запоминать или объявлять?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 19.3.2013, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(bems @  19.3.2013,  01:10 Найти цитируемый пост)
можно же юзать TArray<T>, зачем что-то запоминать или объявлять? 

Да. Но не все используют версии Дельфи, в которые введены дженерики. 

Это сообщение отредактировал(а) northener - 19.3.2013, 01:48


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
northener
Дата 19.3.2013, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Ну и вдобавок. 
Насколько я вижу И-нет вовсе не кишит примерами использования дженериков в поздних версиях Дельфи.



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 19.3.2013, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Это результат падения популярности дельфи, к сожалению. Старые примеры со временем тиражируются, а новых появляется все меньше. Лично я после начального ковыряния в этой новой фиче определился с тем как ее использовать: я использую стандартные дженериковые типы и методы везде где это только возможно, и почти никогда не пишу своих дженериков.
Что касается того что многие используют старые версии дельфи, ну так есть и парни предпочитающие спать с семидесятилетними старухами, но не брать же с них пример smile


--------------------
Обижено школьников: 8
PM MAIL   Вверх
СЭНСЭЙ
Дата 19.3.2013, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



короче мне принять как факт - что динамические массивы как параметры процедуры или функции нельзя передавать в виде описания типа
а передавать уже переменные типа.
Просто мне лично непонятно почему разработчики не заложили такую возможность, ибо нелогично получается.
Вот так не делай, а делай немного через задницу.

Добавлено через 7 минут и 21 секунду
Спасибо всем.
Незнаю как там насчет 70летней бабки,
но если я пишу прогу на 7м делфи то она работает на win 95/98/2000/XP/Vista/2007
и будет ли работать программа на всех версиях операционок МС написанная на новых версиях делфи - не уверен.
Не раз сталкивался что новые версии компиляторов неоправданно более требовательны к ресурсам.
PM MAIL   Вверх
northener
Дата 19.3.2013, 14:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(СЭНСЭЙ @  19.3.2013,  14:13 Найти цитируемый пост)
Просто мне лично непонятно почему разработчики не заложили такую возможность, ибо нелогично получается.

Потому что эта ниша уже давно была занята открытыми массивами.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 20.3.2013, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(СЭНСЭЙ @  19.3.2013,  14:13 Найти цитируемый пост)
но если я пишу прогу на 7м делфи то она работает на win 95/98/2000/XP/Vista/2007
а что такое win2007?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 20.3.2013, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(СЭНСЭЙ @  19.3.2013,  14:13 Найти цитируемый пост)
и будет ли работать программа на всех версиях операционок МС написанная на новых версиях делфи - не уверен.

Будет. За очень редкими и ОЧЕНЬ маловероятными исключениями в виде Win95 в первоначальном варианте и ещё более ранних версий Windows.
И ещё за гораздо менее редкими искслючениями на Vista и старше (если программа, по вине её автора, не учитывает особенности этих ОС).


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 20.3.2013, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(northener @  20.3.2013,  00:52 Найти цитируемый пост)
Будет. За очень редкими и ОЧЕНЬ маловероятными исключениями в виде Win95 в первоначальном варианте и ещё более ранних версий Windows.
тут бы я не стал так уверенно говорить, помнится в 2010 в rtl уже где-то используются api-вызовы, не существующие в 95, 98 и даже (кажется) в 2k
но это же "спать со старухой чтобы иметь возможность спать с другими старухами" smile



--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 20.3.2013, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(bems @  20.3.2013,  00:55 Найти цитируемый пост)
тут бы я не стал так уверенно говорить, помнится в 2010 в rtl уже где-то используются api-вызовы, не существующие в 95, 98 и даже (кажется) в 2k

Возможно. Я не знаком с Д2009+.

Цитата(bems @  20.3.2013,  00:55 Найти цитируемый пост)
но это же "спать со старухой чтобы иметь возможность спать с другими старухами" smile

Юмор понял и оценил. smile



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
DYUMON
Дата 20.3.2013, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 17.6.2006
Где: Новосибирск

Репутация: нет
Всего: 3



делал софтину на delphi xe 2  она без проблемм работает на win 98


--------------------
Всех программистов надо посадить на целероны, что бы впредь головой думали что пишут.
user posted image
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.