2012-05-31 2 views
2

함수가 과부하 된 것으로 간주하여 PascalScript가 올바른 함수 (AddFunction())를 가져 오는 것을 어떻게 확인할 수 있습니까?PascalScript에서 오버로드 된 함수 가져 오기

예를 들어 system.Random을 가져오고 싶습니다. 임의를 호출하는 스크립트를 테스트 할 때

AddFunction(@System.Random, 'function Random: Extended;'); 

하지만, 난 항상 결과로 NAN를 얻을 다음 EngineCompile 이벤트에서 나는이 추가.

내 테스트 스크립트는

Program Script; 
Var 
    a: Single; 
    Check: String; 
Begin 
    a := Random; 
    Check := FloatToStr(a); 
    ShowMessage(Check); 
End. 

내가 PascalScript이 임의의 다른 버전을 가져 강한 느낌이있다. 당신은 어떻게 생각하십니까?

답변

1

가능한 경우 각 오버로드에 중단 점을 넣으십시오 (이 경우에는 System.pas). 스크립트를 실행하십시오. 디버거가 멈추는 지점을 확인하십시오.

+0

다른 이름으로 올바른 버전의 함수 호출을 작성한 후 제대로 작동했습니다. 여기서 흥미로운 점은 일반적인 방법으로 오버로드 된 함수에 대한 프로 시저 포인터를 선언하면 항상 첫 번째 함수가 반환된다는 것입니다 ... 컴파일러가 함수의 다른 버전을 사용하도록하는 또 다른 방법이 있는지 궁금합니다. ? – az01

+0

"다른 이름을 가진 올바른 버전"이 무엇을 의미하는지 모르겠습니다. 'System.Random'은 하나의 이름만을가집니다. 스크립트에서 다른 이름을 사용할 수는 있지만 델파이 내에서'@ System.Random' 표현식이 영향을 미치지 않습니다. –

+0

나는 @ System.Random이 항상 * Random (ARange : Integer)에 대한 포인터를 반환한다는 것을 의미한다 : 정수 *와 다른 주소는 아님. – az01