![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
При использовании массива созданного в процедуре у него не сохраняются значения,вот в таком виде нули выдает:
Код:
var Form1: TForm1; d: array[0..10] of integer; i:integer; procedure x(d: array of integer); procedure TForm1.Button1Click(Sender: TObject); begin x(d); for i:=0 to 10 do memo1.Lines.Add(inttostr(d[i])); end; procedure x(d: array of integer); begin for i:=0 to 10 do begin d[i]:=i; //form1.memo1.Lines.Add(inttostr(d[i])); end; end; А если выводить прямо из процедуры в мемо то все нормально работает. Наверное в записи что то поменять нужно, подскажите что. |
|
#2
|
||||
|
||||
|
procedure x(var d: array of integer);
|
|
#3
|
|||
|
|||
|
Благодарю, проглядел
|
|
#4
|
|||
|
|||
|
Но вот здесь про var немного другое написано
http://www.delphi-manual.ru/lesson9.php Цитата:
|
|
#5
|
|||
|
|||
|
если без var, то делается копия переменной, соответственно что ты меняешь в процедуре делается в копии и на оригинал не влияет
|
|
#6
|
|||
|
|||
|
Поразбирался еще и возникает вопрос,а зачем вообще что то в скобках в процедуре писать, если и так ссылки на глобальные переменные будут? А локальные переменные все равно ниже задаются. В чем сакральный смысл переменных в скобках?
|
|
#7
|
||||
|
||||
|
При использовании в одном юните смысла мало. Теперь представь, что процедура в другом юните или, что "приятнее", в DLL. Что тогда? Как передавать будешь?
|
|
#8
|
||||
|
||||
|
А если так:
Код:
procedure a(b:integer); begin ... end; procedure c; var k:integer; begin ... a(k); end; |
|
#9
|
|||
|
|||
|
Понял,спасибо
|