| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Создание функции |
| Автор: LexaL 5.5.2011, 19:13 |
| Подскажите пожалуйста, можно ли создать функцию возвращающую несколько параметров (2 и более)? Если можно, то так это сделать? За примеры, спасибо! |
| Автор: Данкинг 5.5.2011, 19:22 |
| Можно: создавай свой тип и пиши функцию этого типа. |
| Автор: Galus 5.5.2011, 19:30 | ||
Не пробовал, и под рукой нет установленного Delphi, но возможно так:
Функция вернёт массив данных типа стринг, к каждому элементу которого будет добавлен в конец его порядковый номер. |
| Автор: Snowy 5.5.2011, 19:40 | ||
Нельзя. Но ты можешь передать переменные, как var параметры, чтобы функция их изменила. Для переменного числа значений, можно передать функции список или динамический массив, чтобы она добавила туда записи. |
| Автор: bems 5.5.2011, 20:06 | ||
|
| Автор: Akella 5.5.2011, 20:27 |
| можно использовать record, весьма удобно |
| Автор: LexaL 5.5.2011, 20:30 |
| Нужно что бы возвращала трехмерный массив и три int переменных. Как в этом случае поступить? |
| Автор: Akella 5.5.2011, 21:09 |
| в record запихай и массив и три переменных |
| Автор: LexaL 6.5.2011, 20:04 |
| Подскажите пожалуйста, как правильно вернуть трехмерный массив. Result:= массив [] ? |
| Автор: Frees 6.5.2011, 21:38 |
| сделать не функцию а класс |
| Автор: kuzyara 7.5.2011, 10:30 |
| а вернуть *ссылку не прокатит? |
| Автор: Snowy 10.5.2011, 10:02 |
| Стоит задуматься о проектировании. Сам подход, когда функция возвращает какие-то сложные структуры или наборы данных - затея вредная для здоровья. Как для здоровья программы, так и для здоровья разработчика, в случае, если он работает не один... Если вам нужно получить трёхмерный массив, то создайте его, отдайте функции для заполнения, получите данные, избавьтесь от массива. Данные должны порождаться и уничтожаться в одном и том же месте. В пределах функции, класса, модуля. В зависимости от зоны видимости. Вариант, когда данные порождаются, например в функции, а потом передаются куда-либо, это не есть хорошо. Из данной ситуации следуют 2 варианта: 1. Данные уничтожаются автоматически, при выходе за границы видимости переменной (например функция вернула указатель, на локальную переменную). Обычная ошибка, ведущая всего лишь к тому, что программа не работает. 2. Данные уничтожаются непонятно где, а скорее всего вообще нигде. Типичная для новичков утечка памяти. |