![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Guest |
|
|||
|
Unregistered |
в функцию передается массив, в ней изменяются некоторые элементы массива, после выхода из функции изменения пропадают, почему?
как грамотно в описанной ситуации передавать переменные в функцию? что означает var при передаче параметром (function f(var i : integer)) ? |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
код в студию...
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
спасибо разобрался, как раз var и нужен был
|
|||
|
||||
| Payne |
|
||||
![]() Детектив ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 6.4.2005 Где: Петербург Репутация: 4 Всего: 10 |
var означает, что переменная будет использоваться в функции (и больше нигде). Например:
В данной функции два параметра - a и b. Ты можешь передать в функцию любые значения или переменные типа integer, а в самом теле функции они будут считаться a и b. К примеру, если ты пишешь summa (2, 3), то a будет равно 2, b будет равно 3. Можно также записать summa (var1, var2, ...). При этом те значения, которые ты передал в функцию, никак не меняются. Поэтому и изменения с массивом после выхода из функции "пропадают". В вышеприведенном коде result := ... означает, что функция возвращает то, что написано в правой части оператора. Тип возвращаемого значения определен в заголовке функции: function summa (параметры): тип. Т.е. в твоем случае нужно после операций с массивом записать, к примеру, такую строку:
причем сама функция должна возвращать массив. Допустим, имя функции ar_operations. Имя переменной-массива - arr_var. Тогда вызываешь функцию так: arr_var := ar_operations (arr_var); В этом случае массив передается в функцию, она производит над ним операции и возвращает какой-то результат в виде массива. Его ты и присваиваешь переменной arr_var, с которой работаешь. Это сообщение отредактировал(а) p0s0l - 28.9.2005, 14:59 |
||||
|
|||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Блин. А ты вообще знаешь то о чем пишеш-то? Да будет тебе известно, модификатор var действует с точностью до наоборот. Почитай что-нибудь по основам языка Pascal/Delphi. А уж потом, давай ответы. Прости за грубость. -------------------- Все знать невозможно, но хочется |
|||
|
||||
| Guest |
|
||||||
|
Unregistered |
так изменения пропали
а так изменения сохранились
есть ощущение что сущность var вами раскрыта не полностью конечно можно заменить
но зачаем лес та городить? |
||||||
|
|||||||
| Payne |
|
||||
![]() Детектив ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 6.4.2005 Где: Петербург Репутация: 4 Всего: 10 |
Да знаю я основы Pascal/Delphi, иначе не заработал бы репу +11 (т.е. уже +10
Подожди, если я правильно понял, то в первом твоем посте говорится про функцию. Вот про функцию я тебе и написал... А тут вдруг ты меняешь функцию на процедуру, и говоришь мне "зачем лес городить". Нехорошо получается. |
||||
|
|||||
| Guest |
|
||||||||
|
Unregistered |
в данном случае на мой взгляд более важен способ передачи данных, а именно
от того что procedure была заменена на function в рассматриваемом вопросе мало что поменялось, так тоже работает:
изменения сохранены так что я несовсем понял суть претензии |
||||||||
|
|||||||||
| Петрович |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Ну да. Тогда если вдруг меня спросят что означает слово "True", я отвечу что это означает "лож". Это можно будет считать что я неправильно выразил свою мысль.
А тут, я думаю просто элементарная непонятка. Очень часто, термин "функция" используют для обозначения не только "function", но "procedure". Просто, имеется ввиду нечто, реализующее некоторую функциональность. Более того, во многих языках программирования, понятия процедуры вообще отсутствует. Там есть только функции. -------------------- Все знать невозможно, но хочется |
||||
|
|||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |