![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте. Задался глупым вопросом: каким образом можно передать поле записи через параметр процедуры/функции?
На примере: Код:
type
TM = record
A:integer;
B:integer;
C:integer;
end;
var
Form1: TForm1;
M:TM;
implementation
procedure GAVGAV( ??? );
begin
M.X:=5;
end;
...Долго думал, но так и не придумал. Подскажите пожалуйста. |
|
#2
|
||||
|
||||
|
Код:
procedure GAVGAV(var M:TM); begin M.X:=5; end; ... GAVGAV(M); Никакого поля Х, там быть не может. |
|
#3
|
|||
|
|||
|
Нет, дело в том, что мне нужно чтобы в сторонней процедуре я мог набрать нечто вроде
Код:
GAVGAV(A,5); // При этом к M.A добавлялось, к примеру, 5 GAVGAV(B,2); // При этом к M.B добавлялось 2 Код:
procedure(X:??;Num:integer); begin M.X := M.X+ Num; end; |
|
#4
|
||||
|
||||
|
Немного не так:
Код:
procedure(var X : Integer; Num : Integer); begin X := X + Num; end; ... GAVGAV(M.A, 5); // При этом к M.A добавлялось, к примеру, 5 GAVGAV(M.B, 2); // При этом к M.B добавлялось 2 Код:
function(X : Integer; Num : Integer) : Integer; begin Result := X + Num; end; ... M.A := GAVGAV(M.A, 5); // При этом к M.A добавлялось, к примеру, 5 M.B := GAVGAV(M.B, 2); // При этом к M.B добавлялось 2 Последний раз редактировалось angvelem, 30.03.2012 в 23:41. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Kepler (31.03.2012)
| ||
|
#5
|
|||
|
|||
|
Понял, спасибо. Тем не менее через переменную X поле передать нельзя? Дело просто в том, что в основной программе у меня массив из записей, в каждой из которой несколько полей. Я не могу войти в поле записи, как это предлагаете вы, когда у меня массив, а не один record.
|
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
||||
|
||||
|
Код:
var m:array[0..9] of TM; ... procedure(var X : Integer; Num : Integer); begin X := X + Num; end; ... GAVGAV(m[1].A, 5); |
|
#8
|
|||
|
|||
|
Как вариант - если все поля одинакового типа и расположены подряд, то можно извернуться так
Код:
type
TM = record
case boolean of
true:(
A:integer;
B:integer;
C:integer;
);
false:(X:array[0..2] of integer;)
end; |