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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Результат функции динамический массив 
V
    Опции темы
chiffa
Дата 2.12.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день всем. Есть функция 
Код

function my_func(var input:string; par:string): array of string;
var str_arr:array of string;
begin
str_arr [0]:='1';
str_arr [2]:='2';
str_arr [3]:='3';
.....

Result:=str_arr [3];
end;


при таком коде ругается [Error] Identifier expected but 'ARRAY' found на строку "function my_func(var input:string; par:string): array of string;"

как правильно описать функцию что бы можно было возвращать массив. Буду признателен за помощь
PM MAIL   Вверх
aleksh
Дата 2.12.2010, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



во-первых, возвращать variant, во-вторых задавать размер массива, в-третьих подумать о возврате stringlist-а вместо массива, в-четвертых возвращать таки массив, а не строку как в примере

вот как-то так...
PM MAIL   Вверх
chiffa
Дата 2.12.2010, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а если массив динамический то как задать размер?
stringlist думал не очень удобно....

гм.. а у меня разве возвращается не массив? Как тогда вернуть массива?
PM MAIL   Вверх
aleksh
Дата 2.12.2010, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



хм...
задается через SetLength
у тебя возвращается элемент массива, то есть - строка, а массив - без квадратных скобок

а зачем тебе это? может лучше по другому сделать
PM MAIL   Вверх
kami
Дата 3.12.2010, 00:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

type
  TstrArray = array of string; // ключевая строка во всем остальном  словоблудии - объявление своего типа.

function my_func(var input: string; par: string): TstrArray;
var
  str_arr: TstrArray;
begin
  SetLength(str_arr, 4);
  str_arr[0] := '1';
  str_arr[2] := '2';
  str_arr[3] := '3';

  Result := str_arr;
end;

PM MAIL WWW   Вверх
northener
  Дата 3.12.2010, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(kami @  3.12.2010,  00:43 Найти цитируемый пост)
type
  TstrArray = array of string; // ключевая строка во всем остальном  словоблудии - объявление своего типа.

Вот мне стало интересно. Есть ли где в хелпе Дельфи четкое руководство когда нужно указывать "свой тип" в переменных функций и в результатах последних и когда можно использовать "стандартный тип"?
Пока что на форумах Дельфи только дают работающий код в таких случаях.
Плюс "смущаящая" всех новичков разница в передаче в качестве параметра "открытый массив"/"динамический массив".

P.S. Я то привык всегда создавать свой тип, ибо это всегда работает. 
Но на привычку не сослёшься. Сослаться можно только на документацию.


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


Delphi developer
****


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

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



Цитата(northener @  3.12.2010,  01:47 Найти цитируемый пост)
Есть ли где в хелпе Дельфи четкое руководство когда нужно указывать "свой тип" в переменных функций и в результатах последних и когда можно использовать "стандартный тип"?
А нету. Будет только сообщение о том, что результатом функции не может быть массив. Но при этом может быть свой тип. А в свой тип можно указывать массив. Вот такая вот логика smile



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
chiffa
Дата 5.12.2010, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



kami, спасибо огромное! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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