Q&A

  • FindComponent 로 찾는데.. 에러가나거든요...제발 알려주세요..
[질문] FindComponent 로 찾는데.. 에러가나거든요...제발 알려주세요..



var

Compo : TComponent;

begin



For I := 40 to j -1 do

begin

Compo := FindComponent('TQRLabel'+intTostr(i));



TQRLabel(Compo).Caption := Fieldbyname('F601TXT').AsString; <--- 에러가

납니다.

end;



end;



왜 에러가 나는지 이해가 가질 않거든요...

예전에 도 사용했었는데...



3  COMMENTS
  • Profile
    하얀까마귀 2001.11.28 04:19
    안녕하세요 하얀까마귀 입니다.



    코딩 자체는 별 이상이 없는것 같네요.



    설마 with 절 빼먹으신건 아니죠???



    콤포넌트의 이름이 TQRLabel40 .. 이신가 보죠?



    FindComponent를 하고난다음에 Compo 가 nil 인지 첵크한번 해주시고요.



    그리고에러는 Findcomponent가 아닌 다른곳에서 나는것 같습니다.



    이 소스가지고는 모르겟네요...



    에러를 보여주시면 좀더 정확한 답변이 될것 같은데.. 그럼..



    즐거운시간 되세요..



    - 하얀까마귀 -



    델초보 wrote:

    > [질문] FindComponent 로 찾는데.. 에러가나거든요...제발 알려주세요..

    >

    > var

    > Compo : TComponent;

    > begin

    >

    > For I := 40 to j -1 do

    > begin

    > Compo := FindComponent('TQRLabel'+intTostr(i));

    >

    > TQRLabel(Compo).Caption := Fieldbyname('F601TXT').AsString; <--- 에러가

    > 납니다.

    > end;

    >

    > end;

    >

    > 왜 에러가 나는지 이해가 가질 않거든요...

    > 예전에 도 사용했었는데...

    >

  • Profile
    델초보 2001.11.28 05:11
    소스를 올립니다...

    보시고 알려주세요...





    procedure TNS_NS010F_3P.QuickRep1BeforePrint(Sender: TCustomQuickRep;

    var PrintReport: Boolean);

    var

    i : integer;

    j : integer;

    Compo : TComponent;

    begin

    With Qry_CL601, NS_NS010F.RealGrid3 do

    begin

    Close;

    Sql.Clear;

    Sql.Add('select F601DAT, F601JNO, F601DPT, F601JOB, F601SEQ, F601TXT, F601LEN '+

    'From CL601D@ '+

    'Where F601DAT = :pF601DAT '+

    'And F601JNO = :pF601JNO '+

    'And F601JOB = :pF601JOB '+

    'And F601DPT = :pF601DPT '+

    'Order by F601SEQ ' );



    ParamByName('pF601DAT').AsInteger :=

    StrToInt(Copy(Cells[0,NS_NS010F.RealGrid1.Row].AsString,1,4) +

    Copy(Cells[0,NS_NS010F.RealGrid1.Row].AsString,5,2) +

    Copy(Cells[0,NS_NS010F.RealGrid1.Row].AsString,7,2));

    ParamByName('pF601JNO').AsInteger := StrToInt(Cells[1,NS_NS010F.RealGrid1.Row].AsString);

    ParamByName('pF601JOB').AsString := GF_INSPECTOR_JOB;

    ParamByName('pF601DPT').AsString := GF_INSPECTOR_CODE;

    Open;



    i ;= 40;



    while Not Eof do

    begin



    Compo := FindComponent('TQRLabel'+intTostr(i));

    TQRLabel(Compo).Caption := Fieldbyname('F601TXT').AsString; <---- 요부분

    inc(I); 컴파일하면 에러없이 넘어가는데...실행하면 에러..

    next;

    end;



    Qry_CL601.Close;

    end;

    end;





    에러가 나더라구요...



    에러메세지는



    Project ns_main.ext raised execption class EAccess Violation With message

    'Access viloation at address 0040FD4 in module Read of address FFFFFFFFF'



    이런 에러가 뜨네요..

    지발...

    알려주세요...

















    하얀까마귀 wrote:

    > 안녕하세요 하얀까마귀 입니다.

    >

    > 코딩 자체는 별 이상이 없는것 같네요.

    >

    > 설마 with 절 빼먹으신건 아니죠???

    >

    > 콤포넌트의 이름이 TQRLabel40 .. 이신가 보죠?

    >

    > FindComponent를 하고난다음에 Compo 가 nil 인지 첵크한번 해주시고요.

    >

    > 그리고에러는 Findcomponent가 아닌 다른곳에서 나는것 같습니다.

    >

    > 이 소스가지고는 모르겟네요...

    >

    > 에러를 보여주시면 좀더 정확한 답변이 될것 같은데.. 그럼..

    >

    > 즐거운시간 되세요..

    >

    > - 하얀까마귀 -

    >

    > 델초보 wrote:

    > > [질문] FindComponent 로 찾는데.. 에러가나거든요...제발 알려주세요..

    > >

    > > var

    > > Compo : TComponent;

    > > begin

    > >

    > > For I := 40 to j -1 do

    > > begin

    > > Compo := FindComponent('TQRLabel'+intTostr(i));

    > >

    > > TQRLabel(Compo).Caption := Fieldbyname('F601TXT').AsString; <--- 에러가

    > > 납니다.

    > > end;

    > >

    > > end;

    > >

    > > 왜 에러가 나는지 이해가 가질 않거든요...

    > > 예전에 도 사용했었는데...

    > >

  • Profile
    아폴론 2001.11.28 22:08
    델초보 wrote:

    > 소스를 올립니다...

    > 보시고 알려주세요...

    >

    >

    > procedure TNS_NS010F_3P.QuickRep1BeforePrint(Sender: TCustomQuickRep;

    > var PrintReport: Boolean);

    > var

    > i : integer;

    > j : integer;

    > Compo : TComponent;

    > begin

    > With Qry_CL601, NS_NS010F.RealGrid3 do

    > begin

    > Close;

    > Sql.Clear;

    > Sql.Add('select F601DAT, F601JNO, F601DPT, F601JOB, F601SEQ, F601TXT, F601LEN '+

    > 'From CL601D@ '+

    > 'Where F601DAT = :pF601DAT '+

    > 'And F601JNO = :pF601JNO '+

    > 'And F601JOB = :pF601JOB '+

    > 'And F601DPT = :pF601DPT '+

    > 'Order by F601SEQ ' );

    >

    > ParamByName('pF601DAT').AsInteger :=

    > StrToInt(Copy(Cells[0,NS_NS010F.RealGrid1.Row].AsString,1,4) +

    > Copy(Cells[0,NS_NS010F.RealGrid1.Row].AsString,5,2) +

    > Copy(Cells[0,NS_NS010F.RealGrid1.Row].AsString,7,2));

    > ParamByName('pF601JNO').AsInteger := StrToInt(Cells[1,NS_NS010F.RealGrid1.Row].AsString);

    > ParamByName('pF601JOB').AsString := GF_INSPECTOR_JOB;

    > ParamByName('pF601DPT').AsString := GF_INSPECTOR_CODE;

    > Open;

    >

    > i ;= 40;

    >

    > while Not Eof do

    > begin

    >

    > Compo := FindComponent('TQRLabel'+intTostr(i));

    > TQRLabel(Compo).Caption := Fieldbyname('F601TXT').AsString; <---- 요부분

    > inc(I); 컴파일하면 에러없이 넘어가는데...실행하면 에러..

    > next;

    > end;

    >

    > Qry_CL601.Close;

    > end;

    > end;

    >

    >

    > 에러가 나더라구요...

    >

    > 에러메세지는

    >

    > Project ns_main.ext raised execption class EAccess Violation With message

    > 'Access viloation at address 0040FD4 in module Read of address FFFFFFFFF'

    >

    > 이런 에러가 뜨네요..

    > 지발...

    > 알려주세요...

    >

    >



    Compo := Self.FindComponent('TQRLabel'+intTostr(i));



    >

    >

    >

    >

    >

    >

    > 하얀까마귀 wrote:

    > > 안녕하세요 하얀까마귀 입니다.

    > >

    > > 코딩 자체는 별 이상이 없는것 같네요.

    > >

    > > 설마 with 절 빼먹으신건 아니죠???

    > >

    > > 콤포넌트의 이름이 TQRLabel40 .. 이신가 보죠?

    > >

    > > FindComponent를 하고난다음에 Compo 가 nil 인지 첵크한번 해주시고요.

    > >

    > > 그리고에러는 Findcomponent가 아닌 다른곳에서 나는것 같습니다.

    > >

    > > 이 소스가지고는 모르겟네요...

    > >

    > > 에러를 보여주시면 좀더 정확한 답변이 될것 같은데.. 그럼..

    > >

    > > 즐거운시간 되세요..

    > >

    > > - 하얀까마귀 -

    > >

    > > 델초보 wrote:

    > > > [질문] FindComponent 로 찾는데.. 에러가나거든요...제발 알려주세요..

    > > >

    > > > var

    > > > Compo : TComponent;

    > > > begin

    > > >

    > > > For I := 40 to j -1 do

    > > > begin

    > > > Compo := FindComponent('TQRLabel'+intTostr(i));

    > > >

    > > > TQRLabel(Compo).Caption := Fieldbyname('F601TXT').AsString; <--- 에러가

    > > > 납니다.

    > > > end;

    > > >

    > > > end;

    > > >

    > > > 왜 에러가 나는지 이해가 가질 않거든요...

    > > > 예전에 도 사용했었는데...

    > > >