2016-10-30 5 views
1
uses dmInfo; 

{$R *.dfm} 

procedure TForm3.Button1Click(Sender: TObject); 

begin 

with dmInfo do 

begin 

tblInfo.Open; 

end; 

일부 확실하지 않은 이유로 tblInfo는 선언되지 않은 식별자로 간주됩니다. 도와주세요.선언되지 않은 식별자 데이터베이스 테이블이 인식되지 않습니다.

감사

컴파일러는 당신이 그것을 유자격하지 않았기 때문에 'tblInfo'이 무엇인지 확인할 수없는
+2

데이터 모듈의 이름을 "DataModule"과 동일하게 생각한 것을 보았을 때 실제 문제는 이름 지정 방법과 관련이 있습니다. 이름 지정 우선 순위가 잘못된 것 같습니다. 먼저 중요한 ** 객체 **에 DataModule 대신 dmInfo라는 의미있는 이름을 부여한 다음 체계적인 접미어 (예 : dmInfou) 또는 접 두부. 그 습관에 빠지면 q를 일으키는 미끄럼을 피할 수 있습니다. 또한 전염병처럼 "함께"피하십시오. – MartynA

답변

4

. 이것은 'dmInfo'단위의 범위에 직접적으로 존재하지 않지만 'dmInfo'에있는 데이터 모듈에 속할 가능성이 큽니다. 데이터 모듈의 이름은 '데이터 모듈'인 경우 그래서, 말, 당신은 어떤 모호성을 야기하지 않는다면

with dmInfo.DataModule do 

begin 

tblInfo.Open; 

당신은 단위 이름을 생략 할 수 있습니다 쓸 것입니다.

with DataModule do 

이제는 with을 피하고 가능한 모호한 문제에서 벗어나십시오.

DataModule.tblInfo.Open; 
+3

좋은 캐치, +1,하지만 이것은 사람들이 "빠져 나갈 수있는"문제의 일종이라고 지적 할 수있는 기회를 놓치게되는 것이 유감입니다. – MartynA

+0

@Martyn - 적어도이 코드는 컴파일되지 않았습니다. 감사! –

+0

나는 문제가 'with'와 직접 관련이 있다고 생각하지 않는다. 포스터는 여전히 테이블을 'dmInfo.tblInfo'로 한정하려고 시도 할 수 있습니다. –