2008-10-30 4 views
5

저는 델파이 5의 대형 프로젝트에서 작업합니다. 오늘 두 개의 응용 프로그램 분기를 결합한 후 UnitMain (주 폼의 단위라고 생각할 것입니다) 응용 프로그램 전역 인식을 중지했습니다."응용 프로그램"전역 변수가 인식되지 않습니다.

이것은 다소 기괴한 문제입니다. UnitMain에서 TApplication을 정의하고이를 .dpr 프로젝트 파일에서 Application으로 설정하여 컴파일 할 수는 있지만 액세스 위반이 발생합니다. 응용 프로그램이 특별한 이유는 놀라움이 많습니다.

나는 누군가가 이전에 같은 문제에 직면했거나, Delphi VCL의 내부 작업으로 인해 나를 도와주고 싶습니다.

unit UnitMain; 

interface 

uses 
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
    Menus, ComCtrls, StdCtrls, cxButtons, ExtCtrls, IniFiles, ShellAPI, 
    LMDControl, LMDBaseControl, LMDBaseGraphicControl, LMDGraphicControl, 
    LMDScrollText, cxControls, cxContainer, cxListBox, Psock, NMFtp, db, DBTables, 
    FileCtrl, Configs, cxHint, DSetFunc, OleCtrls, DsInformation, 
    InterAppComm, ActnList, ADODB, OleServer, CRAXDRT_TLB; 

정확한 오류는 컴파일러가이 장치에서 응용 프로그램을 인식하지 못한다는 것입니다. 예를 들어, Application.ProcessMessages의 경우, 호출, 오류는 "필요한 개체 또는 클래스 유형"입니다. 다른 장치에는이 문제가 없습니다.

답변

15

나는 당신이 범위에서 "응용 프로그램"라는 두 개의 기호가, 그리고 양식 장치에서 하나가 활성 아니다 가능성이 높습니다 생각합니다. 사용 목록의 양식 단위가 응용 프로그램이라는 기호가 포함 된 이전 단위 뒤에 오는지 확인하십시오.

그러나 더 많은 정보를 제공해야합니다. 정확한 오류 메시지 등

+0

글쎄, 난 사실 이겠지 - "Forms"를 마지막으로 포함 된 단위로 변경하면 올바른 Application var가 범위에 포함됩니다. 최근에 추가 한 몇 가지 사항 중 하나이기 때문에 Crystal Reports 단위가 다른 응용 프로그램을 정의하는 단위 일 수 있습니다. – anon6439

+2

또 다른 옵션은 Forms.Application을 명시 적으로 참조하는 것입니다. –

2

파일 상단의 uses 절에있는 단위는 무엇입니까? 신청서는 "양식"단위에서옵니다.

예 :

unit MyUnit; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms; 
7

지금은 모든 것을 볼 수있어서 기쁩니다.하지만이 문제를 해결하는 또 다른 방법을 추가 할 것입니다. 특히 사용 조항을 재정리하고 싶지 않은 경우 유닛 이름을 사용하고자하는대로 지정하십시오.

Forms.Application.ProcessMessages; 
관련 문제