Q&A

  • report 문제
text문서에서 한 row씩 읽어서 리포트를 출력하려고 합니다..



근데....첫 줄을 읽은 후에 읽어온 값을 a, b, c, ....에 넣어주고...



마지막 p까지 넣어준후 다음줄(end)로 커서가 이동하면..



배열과, str값이 clear되고, a.caption, b.caption....p.caption에



커서를 위치시키면 'Variable 'self' inaccessible here due to optimization'이라는 메세지가 나오는데....왜 그러는거죠????



test화일의 내용을 일정하지 않고, 항상 변하는 값입니다.



내용은 변하지만, 한 row에 16개의 값이 들어있는건 일정하고,



값은 공백일수도 있고, 아닐수도 있습니다..



고수님들...많이 조언 부탁드립니다..



procedure Tqram847101.QuickRepNeedData(Sender: TObject;

var MoreData: Boolean);

begin

if sw = True then

MoreData := True

else begin

MoreData := False;

CloseFile(TestFile);

end;

end;



procedure Tqram847101.DetailBand1AfterPrint(Sender: TQRCustomBand;

BandPrinted: Boolean);

begin

if Not Eof(TestFile) then

sw := True

else

sw := False;

end;



procedure Tqram847101.DetailBand1BeforePrint(Sender: TQRCustomBand;

var PrintBand: Boolean);

var

len : Array[1..16] of String;

i, j, k : Integer;

begin

//배열 초기화

for i := 1 to 16 do

len[i] := '';



j := 1;

k := 0;



//레코드 read(text화일 한줄)

Readln(TestFile, Str);



for i := 0 to length(trim(Str)) do

begin

if str[i] = ';' then //';'구분자

begin

k := k + 1;

len[k] := copy(str, j, i-j);

j := i + 1;

end;

end;

a.Caption := len[1]; //자산관리번호

b.Caption := len[2]; //자산명

c.Caption := len[3]; //취득일

d.Caption := len[4]; //취득구분

e.Caption := len[5]; //취득금액

f.Caption := len[6]; //내용연수

g.Caption := len[7]; //상각구분

h.Caption := len[8]; //잔존가액

i.Caption := len[9]; //비치장소

j.Caption := len[10]; //형식 및 규격

kCaption := len[11]; //상태

l.Caption := len[12]; //업무구분

m.Caption := len[13]; //자본적지출누계

n.Caption := len[14]; //경과연수

o.Caption := len[15]; //상각율(액)

p.Caption := len[16]; //적요

end;





procedure Tqram847101.QuickRepBeforePrint(Sender: TCustomQuickRep;

var PrintReport: Boolean);

begin

AssignFile(TestFile, 'C:ass.txt');

Reset(TestFile); // opens typed and untyped file with read-write access



sw := True;

end;

2  COMMENTS
  • Profile
    최용일 2001.03.08 06:33
    안녕하세요. 최용일입니다.



    아마도 디버깅하시는 중인가 보군요... 델파이는 진짜 좋은 컴파일러로 항상 메모리를



    최적화 시킵니다. 그때 그때 다음에 참조하지 않을 변수들은 바로 메모리에서 해제시켜



    버립니다. 바로 이 옵티마이징(메모리 최적화) 때문에 그런겁니다.



    사실 inaccessible... 어쩌고 나오는 것은 그 뒤에는 전혀 참조를 안합니다. 때문에 그



    값이 더이상 메모리에 존재할 필요가 없죠... 물론 지나간 값을 확인할려면 조금 불편합



    니다만 옵션에서 꺼주시면 됩니다.(별루 추천하고 싶지는 않지만...)



    ^^ 항상 즐코하세요...



    초보 wrote:

    > text문서에서 한 row씩 읽어서 리포트를 출력하려고 합니다..

    >

    > 근데....첫 줄을 읽은 후에 읽어온 값을 a, b, c, ....에 넣어주고...

    >

    > 마지막 p까지 넣어준후 다음줄(end)로 커서가 이동하면..

    >

    > 배열과, str값이 clear되고, a.caption, b.caption....p.caption에

    >

    > 커서를 위치시키면 'Variable 'self' inaccessible here due to optimization'이라는 메세지가 나오는데....왜 그러는거죠????

    >

    > test화일의 내용을 일정하지 않고, 항상 변하는 값입니다.

    >

    > 내용은 변하지만, 한 row에 16개의 값이 들어있는건 일정하고,

    >

    > 값은 공백일수도 있고, 아닐수도 있습니다..

    >

    > 고수님들...많이 조언 부탁드립니다..

    >

    > procedure Tqram847101.QuickRepNeedData(Sender: TObject;

    > var MoreData: Boolean);

    > begin

    > if sw = True then

    > MoreData := True

    > else begin

    > MoreData := False;

    > CloseFile(TestFile);

    > end;

    > end;

    >

    > procedure Tqram847101.DetailBand1AfterPrint(Sender: TQRCustomBand;

    > BandPrinted: Boolean);

    > begin

    > if Not Eof(TestFile) then

    > sw := True

    > else

    > sw := False;

    > end;

    >

    > procedure Tqram847101.DetailBand1BeforePrint(Sender: TQRCustomBand;

    > var PrintBand: Boolean);

    > var

    > len : Array[1..16] of String;

    > i, j, k : Integer;

    > begin

    > //배열 초기화

    > for i := 1 to 16 do

    > len[i] := '';

    >

    > j := 1;

    > k := 0;

    >

    > //레코드 read(text화일 한줄)

    > Readln(TestFile, Str);

    >

    > for i := 0 to length(trim(Str)) do

    > begin

    > if str[i] = ';' then //';'구분자

    > begin

    > k := k + 1;

    > len[k] := copy(str, j, i-j);

    > j := i + 1;

    > end;

    > end;

    > a.Caption := len[1]; //자산관리번호

    > b.Caption := len[2]; //자산명

    > c.Caption := len[3]; //취득일

    > d.Caption := len[4]; //취득구분

    > e.Caption := len[5]; //취득금액

    > f.Caption := len[6]; //내용연수

    > g.Caption := len[7]; //상각구분

    > h.Caption := len[8]; //잔존가액

    > i.Caption := len[9]; //비치장소

    > j.Caption := len[10]; //형식 및 규격

    > kCaption := len[11]; //상태

    > l.Caption := len[12]; //업무구분

    > m.Caption := len[13]; //자본적지출누계

    > n.Caption := len[14]; //경과연수

    > o.Caption := len[15]; //상각율(액)

    > p.Caption := len[16]; //적요

    > end;

    >

    >

    > procedure Tqram847101.QuickRepBeforePrint(Sender: TCustomQuickRep;

    > var PrintReport: Boolean);

    > begin

    > AssignFile(TestFile, 'C:ass.txt');

    > Reset(TestFile); // opens typed and untyped file with read-write access

    >

    > sw := True;

    > end;

  • Profile
    초보 2001.03.08 07:05
    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > 아마도 디버깅하시는 중인가 보군요... 델파이는 진짜 좋은 컴파일러로 항상 메모리를

    >

    > 최적화 시킵니다. 그때 그때 다음에 참조하지 않을 변수들은 바로 메모리에서 해제시켜

    >

    > 버립니다. 바로 이 옵티마이징(메모리 최적화) 때문에 그런겁니다.

    >

    > 사실 inaccessible... 어쩌고 나오는 것은 그 뒤에는 전혀 참조를 안합니다. 때문에 그

    >

    > 값이 더이상 메모리에 존재할 필요가 없죠... 물론 지나간 값을 확인할려면 조금 불편합

    >

    > 니다만 옵션에서 꺼주시면 됩니다.(별루 추천하고 싶지는 않지만...)

    >

    > ^^ 항상 즐코하세요...

    >



    답변 감사합니다..



    그럼....옵션에서 꺼주라고 하셨는데...그건 무슨말인지 잘?????



    글구....다음에 참조하지 않을 변수라는건 어떻게 판단하죠????



    not eof인 동안은 계속 참조해야 하는데...



    한줄만 읽고 그렇게 나오니깐...도대체 어떻게 손을 대야 할지 전혀 감이 안오거든요..



    좀더..도움을 주셨으면 고맙겠습니다....





    • 고대서창
      2001.03.08 18:26
      private .. public .. 안녕하세요.. 델파 초보 입니다.. > 델파이에서 모든 폼에...
    • 풀밭
      2001.03.08 12:12
      var Form1: TForm1; GlobalVarable: Integer; 안녕하세요.. 델파 초보 입니다.. > 델파이에서 모...
    • sky
    • 2001.03.08 09:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2001.03.08 18:35
      한델 자료실에가면...인터베이스 도움말 pdf로 되어있는거 있는데요. 물론 영문입니다. 정말 훌륭한 도...
    • 이기태
      2001.03.08 09:36
      처음 IE 5.5 SP1 나왔는 때 나던 에러인데... 요즘 VM 이다 머다 MS 제품들 업데이트 하다보면... Ke...
    • kangdo
      2001.03.08 18:34
      답변 감사드립니다. 지금 쓰고 internet explore 버전이 5.5 이거든요! 우선은 님이 말씀하신대로 해보...
    • 나구네
      2001.03.08 19:19
      김찬식 wrote: > Edit.Text 에 새로운 글자를 입력받으면 Insert 가 되는데 > 이전 글자 위에 덮어 쓰는...
    • 김찬식
    • 2001.03.12 11:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • yypbd
      2001.03.12 11:47
      김찬식 wrote: > 답변 정말 감사합니다. > 그럼 Edit1.text 에 첫글자 입력이라는 것을 알수 있는 방법은...
    • imcs
    • 2001.03.12 11:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 아기코알라
      2001.03.12 11:48
      안녕하세요...첨으로 답변하게 되네요... 제어판에 가보면 DBE라고 있읍니다. 그것을 클릭하시면 탐색...
    • 최용일
      2001.03.12 11:50
      Edit1.Text := ''; 하시면 이전 내용이 지워집니다. 김찬식 wrote: > Edit로 12자를 입력받을 때, 이전...
    • 아폴론
      2001.03.08 18:46
      돌아버려 wrote: > 월을 입력 하면.. > 그달의 일요일을 제외한 요일들에 자료를 입력하려 합니다. > ...
    • 구경꾼
      2001.03.08 10:10
      돌아버려 wrote: > 월을 입력 하면.. > 그달의 일요일을 제외한 요일들에 자료를 입력하려 합니다. > ...
    • 초보
    • 2001.03.08 06:14
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.03.08 06:33
      안녕하세요. 최용일입니다. 아마도 디버깅하시는 중인가 보군요... 델파이는 진짜 좋은 컴파일러로 항상...
    • 초보
      2001.03.08 07:05
      최용일 wrote: > 안녕하세요. 최용일입니다. > > 아마도 디버깅하시는 중인가 보군요... 델파이는 진짜...
    • 김지현
      2001.03.08 18:59
      그거는 프린트를 어떤걸 사용하느냐에 따라서도 틀려져염.. 혹 일반 용지가 아닌 연속용지를 사용하시는건...
    • kylix
      2001.03.08 07:37
      호출규약이 stdcall만 있는것은 아닙니다. 제가 VB를 알지 못하는 관계로 정확히 말씀드 리지 못하겠는...
    • 김종선
      2001.03.08 20:50
      님께서 추천해주신 방법으로 다해보았지만 같은 현상이 납니다. 일단은 dll이 실행이 되구요. vb코드에선...
    • 과객
    • 2001.03.08 05:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 서성호
      2001.03.08 07:49
      과객 wrote: > 소켓으로 통신을 하는데 기본적으로 IP와 PORT가 필요하잖아요? > 근데 보통 21번 포트는 ...
    • 써니
    • 2001.03.08 04:51
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 초보
    • 2001.03.08 04:35
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.03.08 05:32
      안녕하세요. 최용일입니다. 두번째 for문이 첫번째 for문안으로 들어가야 하겠죠. 안그러면 맨 마지막거...
    • 초보
      2001.03.08 06:25
      답변 감사합니다.. 한가지 더 물어볼게 있는데요.. 혹시...text파일에 자료를 append하기전에 text파...
    • 최용일
      2001.03.08 06:37
      Append하기 전에 자료를 클리어한다? 그럴려면 왜 Append를 하죠? 그냥 Rewrite를 하시면 되는데... ...
    • 윤신호
    • 2001.03.08 04:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • kylix
      2001.03.08 05:11
      함수이름을 잘못썼을때 대부분 발생하는 에러인데요. C는 대소문자를 구분하니까 잘 맞추어서 써보세요....
    • 이승근
    • 2001.03.08 04:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
      2001.03.08 05:19
      이승근 wrote: > 전표등록 프로그램에서 검색버튼을 누르면 다음과 같이 검색을 하고자 합니다... > 참고...
    • 구경꾼
      2001.03.08 10:18
      임성옥 wrote: > 폼을 열면 열자마자 다운을 받게 하고 싶거든여,, > onshow에서 connect를 시키고 updat...