function UtLine.MakePointIntersect(ln : UtLine) : UtPoint;
begin
if (IsIntersectToLine(ln) = False) or ((P1.X = P2.X) and (ln.P1.X = ln.P2.X)) then
begin
Result := nil;
end
else
begin
Result := UtPoint.Create;
if (P1.X = P2.X) then
begin
Result.X := P1.X;
Result.Y := ln.Slope * Result.X + ln.GetYIntercept;
end
else if (ln.P1.X = ln.P2.X) then
begin
Result.X := ln.P1.X;
Result.Y := Slope * Result.X + GetYIntercept;
end
else
begin
Result.X := (ln.GetYIntercept - GetYIntercept) / (Slope - ln.Slope);
Result.Y := Slope * Result.X + GetYIntercept;
end
end;
end;
위에 처럼 함수를 만들어 사용할때 처음 if문에 조건을 만족하면
nil을 반환하도록 했는데요... 여기서 access violation 오류가 납니다.
어떤식으로 해야 오류가 안날런지요...
왜그런지 좀 답변 좀 주세요.. 저는 도저히 모르겠슴당..ㅠㅠ
if (IsIntersectToLine(ln) = False) or ((P1.X = P2.X) and (ln.P1.X = ln.P2.X)) then
에서
P1, P2 이 포인터 인가요
만약 P1, P2의 값이 없을 수 있겠네요