2009-10-13 3 views
3

나는 윈도우 XP/델파이 7에서 일하고있다. 실행중인 프로그램 안에 프로 시저 (또는 함수)를 추가해야하는데, 끝내면 다시 컴파일하고 싶지 않다.런타임시 프로그램 내에 코드를 추가하는 방법 (Delphi/Windows)?

다른 유형의 알람을 보내는 5 가지 기능이있는 호스트 애플리케이션이 있지만 다른 새로운 알람 유형이 있기 때문에 이러한 알람을 보내는 새로운 기능을 사용해야하지만 호스트 애플리케이션을 다시 빌드하면 안됩니다 . TAlarmManager라는 클래스가 있는데이 함수는 이러한 함수를 호출합니다.

아마도 플러그인입니까 ?? 좋아,하지만 어떻게 새로운 기능을 "삽입 할 수 있습니까?" 자습서, 매뉴얼, 서적, 등등 .. 이것에 대해, 또는 이것을하는 방법에 대한 조언을 배우기 위해서 ???

필자는 플러그인을 연구했지만, 호스트 응용 프로그램에 기능을 추가하는 것에 대해서는 아무도 "말하지 않습니다". 저에게 플러그인은 자체 기능을 추가합니다. 즉, 호스트 코드에 "코드"를 추가하는 것이 아니라 무언가를하기 위해 자체 코드로 개발되었습니다. 어떻게 할 수 있습니까 ??

답변

4

기술 측면 : Delphi IDE는 어떻게합니까? 그것은 저를위한 첫번째 장소 일 것입니다.

플러그인을 이해하려면 새로운 기능을 추가 할 수 없다는 점을 이해해야합니다. 이전 코드는 호출 방법을 모르기 때문에 호출 할 수 없습니다.

그럼 어떻게 할 지 "플러그인"에 "등록"또는 "시작"기능을 추가하십시오. 이 시작 함수는 검사하거나 확장 할 수있는 매개 변수로 데이터 구조를 가져옵니다. 귀하의 경우에는 알람 목록이됩니다. 알람은 항상 동일하게 작동하므로 추가 알람을 추가 할 수 있습니다.

메인 코드는 모든 플러그인을 등록한 후 알람리스트를 걸어보고 각각에 표준 알람 기능을 호출합니다. 더 이상 각 알람이 발생하는 위치와 실제로 발생하는 위치를 신경 쓰지 않습니다.

여기 키 : 양측이 가입하는 인터페이스를 정의해야합니다. 메인 코드는 인터페이스 함수를 호출하고 플러그인 코드는 인터페이스 함수를 구현합니다.

+0

대단히 감사합니다. 내 친구, 매우 유용합니다! – Yulien

3

다른 옵션으로 프로젝트에 스크립팅 구성 요소를 사용할 수 있습니다. 아주 잘 작동하는 것은 PascalScript입니다. 이렇게하면 사실 후에 외부 스크립트를로드 한 다음 필요할 때 실행하여 응용 프로그램과 상호 작용할 수 있습니다. Aaron이 제안한대로 스크립트와 응용 프로그램을 상호 작용할 수있는 인터페이스도 제공해야합니다.

0

"경보"가 무슨 뜻인지 잘 모르겠습니다. 그래서 나는 몇 가지 가정을하고 있습니다.

1) 알람에 대한 추가 코드가 필요하지 않으면 데이터 구동을 위해 노력할 것입니다. 서로 다른 종류의 알람을 데이터베이스 또는 구성 파일에 보관하면 재 컴파일 또는 재설치없이 현장에서 응용 프로그램을 쉽게 업데이트 할 수 있습니다.

2) 각 알람에 특별한 코드가 필요한 경우 런타임 패키지를 응용 프로그램의 플러그인으로 사용할 수 있습니다. Delphi 런타임 패키지를 검색하여 아이디어와 자습서를 얻으십시오.

http://delphi.wikia.com/wiki/Creating_Packages

http://delphi.about.com/od/objectpascalide/a/bpl_vs_dll.htm

3) 스크립팅이 skamradt로 이미 언급 : 여기 내가 찾은 링크의 몇 가지 있습니다.응용 프로그램에 의미가있는 경우 고객이 자신의 부품을 다시 컴파일 할 필요없이 자체 애드온 기능을 작성할 수 있습니다. skamradt에서 알 수 있듯이

0

당신은 거의 확실히, Pascalscript을 사용하고 싶습니다. 여기서 시작해야하며이 옵션을 진지하게 고려해야합니다. 라이브 코드를 텍스트로 직렬화 할 수있는 가능성은 많이 있습니다. 유일한 단점은 실행 속도 일 가능성이 있지만 응용 프로그램 도메인에는 문제가되지 않을 수도 있습니다. 내가 skamradt을 upvoted 것입니다,하지만 난 얼마 전에 내가 종류의 당신이 설명하는지 같은 상황을보고했다 :

0

upvote에 충분한 명성을 필요가 없습니다.

내 대답은 .DLL입니다. 변수 파일을 동적으로로드 된 .DLL에 넣습니다. 이름은 구성 파일에 지정되어 있습니다. 나는 상황에 대해 내가 아는 모든 것을 담고있는 기록을 통과시켰다.

내 경우 이것은 매우 잘 작동 만 성공/수익없이 화면 출력 실패가 있었다. (그것은 기계의 조각을 지휘했다.)

0

이 스크립트 언어 또는 "도메인 특정 언어"이해 할 수있는 장소 같은 소리를. 몇 가지 접근 방법이 여기에 있습니다 :

  • 은 COM API를 통해 델파이 코드에 액세스 VBScript를 알람 기능 (메모장에 기록 .VBS 파일)을 구현합니다. COM API를 사용하면 Delphi를 비롯한 다양한 기능을 프로그래밍 할 수있는 광범위한 프로그래밍 도구에 액세스 할 수 있습니다. 이것은 가장 서투른 해결책이지만, 가장 쉬운 방법입니다. 그것은 또한 판매 프로세스에 이익이 될 수 있으며 항상 물건을 판매하는 방법에 대해 생각하는 것이 좋습니다.

  • Delphi에서 자신의 함수 언어를 구현하십시오. 이렇게하면 최종 사용자가 자신의 알람 기능을 작성할 수 있으므로 매우 쉽게 만들 수 있습니다. 식 평가자로 사용하는 경우 2 * T1> T2로 경고를 작성할 수 있습니다. 거기에 몇 가지 표현 평가자가 있으며 자신의 필요에 부합하지 않는 경우 자신 만의 문장을 작성할 수도 있습니다.

  • 당신은이 스크립트를로드 할 수 있습니다 PascalScript처럼 PaxCompiler에서 살펴해야한다 "파스칼 스크립트는"http://www.remobjects.com/ps.aspx

0

를 참조 예를 들어, 델파이 응용 프로그램 내에서 미리 정의 된 프로그래밍 언어를 사용하지만, 더 많은 성능을 위해 사전 컴파일 할 수도 있습니다. 데모 섹션에서 문제 해결 방법을 찾으십시오. 보조 노트로

는 웹 페이지는 정말 나쁜 보이지만 패키지는 정말 강력하고 안정적이다.

관련 문제