포인터를 공부하다 궁금한게 있어 이렇게 올립니다~
type
TAA =record
ss : String[20];
ii : Integer;
end;
PAA = ^TAA;
procedure TForm1.Button1Click(Sender: TObject);
var
aa : PAA;
iRow : Integer;
begin
Inc(iRow);
new(aa);
aa.ss := 'aaaa';
aa.ii := iRow;
end;
위와같이 코딩했을때는 에러가 전혀 나질 않습니다.. 그런데
aa.ii := iRow; 이부분을 aa.ii := Inc(iRow); 이렇게 바꾸면 왜 에러가 날까요??
정말 몰라서 그러니 자세하게 좀 알려주세요~~ ^^
Error 메세지를 보시면 금방 눈치 채실 것 같은데..
INC는 결과값을 반환하지 않는 Procedure입니다.
즉, 대입문에서는 절대 사용할 수 없습니다.
ii는 Integer, inc()함수는 Procedure
Type으로 대입연산자를 비교하면,
Integer = Procedure
은 절대 불가합니다.
대입연산자의 경우 반드시 우측에는 좌측의 변수와 대응대는 혹은 호환되는
상수값을 반환하여야만 합니다.
이 상수값은 정수,실수,pointer등이 이에 해당됩니다.
pointer는 실제 포인트라기보다 물리적인 메모리 주소를 전달하므로,
상수라고도 이야기 할 수 있겠습니다.