<!--CodeS-->
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tarr = Record
nf_sum: longint;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
DL: Tarr;
procedure insert(L: Tarr);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.insert(L: Tarr);
begin
L.nf_sum := 300;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
insert(DL);
ShowMessage(IntToStr(DL.nf_sum));
end;
end.
<!--CodeE-->
Tarr이란 레코드 타입에 ... nf_sum이라는 longint변수를 설정했습니다.
위에서 버튼을 누르면 insert함수 호출로.. 300값이 할당되고... ShowMessage호출로 300이란 값이 출력되야되는데 0이 계속 출력되네요
왜 안되는거죠??... 가르쳐주세요~
procedure insert(L: Tarr); => procedure insert(var L: Tarr);
procedure TForm1.insert(var L: Tarr);
begin
L.nf_sum := 300;
end;
객체를 넘기실 때는 어차피 Reference가 넘어가기 때문에 var 를 써줄 필요가 없지만
단순 변수를 넘기실때는 var 로 넘겨야 Reference를 넘기는 것이 됩니다..
델파이에서 [Value and variable parameters]로 색인하셔서 도움말 보시면 도움이 되실겁니다.