2009-07-27 6 views
5

이전 델파이 프로그램 (D7)에서 유지 관리에 문제가 있습니다. 많은 프로그램 로직이 DPR 파일에 있습니다 (이것은 창 프로그램이 아닙니다). 일부 유닛은 데이터베이스 액세스와 같은 것을 제공합니다. 우리는 DB 장치에서 일부 디버그를 가져와야하지만, DPR에는 디버그 기능이 있습니다. 우리는 디버그 기능을 쉽게 제거 할 수 없습니다. DPR은 메인 파이프처럼 DPR에 고유 한 것들을 사용하기 때문입니다. 그것을 분리하는 것은 스파게티와 미트볼 소스를 애타게하려고하는 것과 같습니다.DPR 범위에서 델파이 함수에 액세스하는 방법

DPR 범위에서 선언 된 함수를 하위 단위에서 호출하는 방법은 무엇입니까? C++에서 :: 연산자와 동일한 것은 무엇입니까?

앱을 다시 디자인하지 말아주세요. 나는 그러고 싶지만 필요한 시간을주지 않을 것입니다. 또한이 강아지를 다시 디자인하면 델파이에 없었을 것입니다.

답변

14

DPR의 함수 서명과 일치하는 유닛에서 메소드 변수를 선언 할 수 있습니다. 프로그램의 시작 부분에서 메소드 변수를 함수로 설정합니다. 유닛 내부에서 메소드 변수를 호출합니다.

예 :

(DPR)

uses 
    Unit1; 

function DoSomething(Par: Integer): Integer; 
begin 
... 
end; 

... 
begin 
    DoSomethingVar := DoSomething; 
    ... 
end; 

(부)

unit Unit1; 

interface 
... 
var 
    DoSomethingVar: function(Par1: Integer): Integer; 
... 
implementation 
... 
    SomeResult := DoSomethingVar(SomeParameter); 
... 
+1

Sinple, 우아하고 작동합니다, 감사합니다. 이렇게하면 코드를 올바르게 리팩터링 할 시간을 갖게됩니다. –

+0

klever kludge! :-) – Argalatyr

4

수 없습니다. 단위 계층은 엄격합니다.

  • 새로운 장치에 .DPR의 관련 부분을 당겨 :

    은 두 가지 옵션이 있습니다. 구현에 사용을 옮기면 가져 오기주기가 중단 될 수 있습니다. createform * 작업은 아마도 움직이는 것이 안전하지 않을 수 있습니다. 아마도 프로젝트 관리자를 화나게 할 것입니다.

  • 또는 몇 가지 콜백 함수 (functionpointer C와 같은 함수, 메소드 유형)를 정의하고 필요한 경우 .dpr에서 호출하는 프로 시저로 관련 단위 초기화 코드를 이동하십시오.
3

다른 단위에서는 .dpr의 기능을 사용하는 방법을 모르지만 코드를 변경해야한다면 .dpr을 일반 단위로 변경 한 다음 새 .dpr 및 기타 기능/루틴을 사용하십시오. 단위.

0

.DPR 가장 fundmental 파스칼 프로젝트 파일이다.

프로젝트에서 단위 파일을 사용할 수 있으므로 단위의 함수/프로 시저를 사용할 수 있습니다.

함수/프로 시저에 액세스하기위한 단위 이름의 접두어를 붙일 수 있습니다.

함수/프로 시저가 특정 클래스에 속하면 메서드이기 때문에 함수/프로 시저에 액세스하기위한 인스턴스를 만들려면 이 필요합니다.

어쨌든 델파이는 객체 파스칼을 핵심으로 사용하므로 파스칼 개념 및 객체 파스칼 개념을 사용하여 필요한 모든 메소드/프로 시저/함수/속성에 액세스 할 수 있습니다.

어떤 파일이라도 호출해야하며 어떤 외부 라이브러리의 데칼레이션 파일은 을 제외한 유일한 파일입니다.

관련 문제