| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > почему пропали изменения? |
| Автор: Guest 28.9.2005, 10:26 |
| в функцию передается массив, в ней изменяются некоторые элементы массива, после выхода из функции изменения пропадают, почему? как грамотно в описанной ситуации передавать переменные в функцию? что означает var при передаче параметром (function f(var i : integer)) ? |
| Автор: Albinos_x 28.9.2005, 10:35 |
| код в студию... |
| Автор: Guest 28.9.2005, 10:45 |
| спасибо разобрался, как раз var и нужен был |
| Автор: Payne 28.9.2005, 10:50 | ||||
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, с которой работаешь. |
| Автор: Петрович 28.9.2005, 11:03 | ||
Блин. А ты вообще знаешь то о чем пишеш-то? Да будет тебе известно, модификатор var действует с точностью до наоборот. Почитай что-нибудь по основам языка Pascal/Delphi. А уж потом, давай ответы. Прости за грубость. |
| Автор: Guest 28.9.2005, 11:05 | ||||||
так изменения пропали
а так изменения сохранились
есть ощущение что сущность var вами раскрыта не полностью конечно можно заменить
но зачаем лес та городить? |
| Автор: Payne 28.9.2005, 11:41 | ||||
Да знаю я основы Pascal/Delphi, иначе не заработал бы репу +11 (т.е. уже +10
Подожди, если я правильно понял, то в первом твоем посте говорится про функцию. Вот про функцию я тебе и написал... А тут вдруг ты меняешь функцию на процедуру, и говоришь мне "зачем лес городить". Нехорошо получается. |
| Автор: Guest 28.9.2005, 12:04 | ||||||||
в данном случае на мой взгляд более важен способ передачи данных, а именно
от того что procedure была заменена на function в рассматриваемом вопросе мало что поменялось, так тоже работает:
изменения сохранены так что я несовсем понял суть претензии |
| Автор: Петрович 28.9.2005, 12:15 | ||||
Ну да. Тогда если вдруг меня спросят что означает слово "True", я отвечу что это означает "лож". Это можно будет считать что я неправильно выразил свою мысль.
А тут, я думаю просто элементарная непонятка. Очень часто, термин "функция" используют для обозначения не только "function", но "procedure". Просто, имеется ввиду нечто, реализующее некоторую функциональность. Более того, во многих языках программирования, понятия процедуры вообще отсутствует. Там есть только функции. |
| Автор: Girder 4.10.2005, 23:49 |
| http://forum.vingrad.ru/index.php?showtopic=57330 |