Q&A

  • 전역(Global) 변수의 값?
전역(Global) 변수로

lineindex, linenumber, line: integer로 선언하였습니다.

그리고, 맨 아래에 적은 것과 같은 함수를 만들어서

버튼을 클릭할 때마다 변수의 값을 증가시키고 싶었습니다.



그리고, linenumber의 값은 폼(form1)이 형성될 때, 미리

edit1의 라인(lines)의 값으로 3이 대입된 상태입니다.

그런데 버튼을 클릭하면 linenumber이 전역 변수임에도 불구하고

그 값이 3에서 1로 바뀝니다. 왜 그런지 모르겠습니다.

버튼을 클릭해도 3이라는 값을 유지하고 싶습니다.



그리고 아래 함수에서 버튼을 클릭할 때마다

lineindex와 line의 값을 증가시키고

싶습니다. 조언을 부탁드립니다.



C언어에서는 포인터를 이용하였는데, 델파이에서는

어떻게 하여야 하는지 모르겠습니다.

델파이 초보자입니다. 여기까지 읽어주셔서 고맙습니다.



procedure TForm1.Button2Click(Sender: TObject);



begin

lineindex := 0;

if (linenumber <= lineindex) then exit

else begin

line:= linenumber-(linenumber-lineindex);

label1.caption:=inttostr(line)+'줄: ';

label2.caption:= edit1.Lines[line];

inc(lineindex);

inc(line);

end;

end;

끝, 고맙습니다.

2  COMMENTS
  • Profile
    구창민 1999.07.04 22:14
    이정환 께서 말씀하시기를...

    > 전역(Global) 변수로

    > lineindex, linenumber, line: integer로 선언하였습니다.

    > 그리고, 맨 아래에 적은 것과 같은 함수를 만들어서

    > 버튼을 클릭할 때마다 변수의 값을 증가시키고 싶었습니다.

    >

    > 그리고, linenumber의 값은 폼(form1)이 형성될 때, 미리

    > edit1의 라인(lines)의 값으로 3이 대입된 상태입니다.

    > 그런데 버튼을 클릭하면 linenumber이 전역 변수임에도 불구하고

    > 그 값이 3에서 1로 바뀝니다. 왜 그런지 모르겠습니다.

    > 버튼을 클릭해도 3이라는 값을 유지하고 싶습니다.

    >

    > 그리고 아래 함수에서 버튼을 클릭할 때마다

    > lineindex와 line의 값을 증가시키고

    > 싶습니다. 조언을 부탁드립니다.

    >

    > C언어에서는 포인터를 이용하였는데, 델파이에서는

    > 어떻게 하여야 하는지 모르겠습니다.

    > 델파이 초보자입니다. 여기까지 읽어주셔서 고맙습니다.



    이정환님 안녕하세요?

    아래 정환님이 작성하신 코드에서 잘못된 점을 지적해 드릴께요.

    보시고, 수정하세요.



    procedure TForm1.Button2Click(Sender: TObject);

    begin

    lineindex := 0; //이 변수는 어떤용도인지 모르나 항상 0 이 됩니다.

    if (linenumber <= lineindex) then exit

    else

    begin //linebumber 가 0 보다 클때 아래를 타게 작성되어 있네요.

    line:= linenumber-(linenumber-lineindex); //lineindex가 항상 0 이니

    //위에서 line 변수에는 항상 0 이 들어가게 됩니다.

    //왜냐면, 자신(linenumber)에서 자신(linenumber)을 뺄셈 연산하므로,

    label1.caption:=inttostr(line)+'줄: '; //결과가 '0 줄'이 나오겠군요.

    label2.caption:= edit1.Lines[line]; //Edit1의 첫줄이 나오겠네요.

    inc(lineindex); //항상 0 인 변수이니 당연히 1이 되겠군요.

    inc(line); // 이변수도 마찬가지로 1 이 되겠군요.

    end;

    end;

    > 끝, 고맙습니다.



    결론적으로 매번 버튼클릭이 있을때마다 lineindex변수와 line변수는

    0에서 한번씩 inc 하게 하셨으니 두 변수다 항상 1 이 됩니다.

    이제 원인을 아셨으리라 생각되구요.

    그럼.. 즐거운 프로그래밍 되세요~





  • Profile
    이정환 1999.07.05 05:06
    구창민님 답변에 감사드립니다.



    제 코딩 실력을 보고 웃으셨겠군요.

    답을 주신 것을 보고 저도 한참 웃었습니다.



    그리고 자세히 검토하여보니, 코딩 만 문제가 아니라

    함수를 사용하는 전체 로직에도 문제가 있었습니다.



    답을 주셔서 검토하면서 발견할 수가 있었습니다.

    덕분에 델파이에 한걸음 더 다가선듯한 느낌입니다.



    하시는 모든 일에 늘 좋은 일이 많기를 바랍니다.



    감사하며 이정환.

    • Endy
    • 1999.07.05 19:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조복기
      1999.07.05 19:54
      Endy 께서 말씀하시기를... > 저는 MS-SQL7.0을 사용합니다. Delphi에서 StoreProcedure를 실행하면 BDE E...
    • pascal
    • 1999.07.05 12:36
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김길중
    • 1999.07.04 11:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하명훈
      1999.07.05 23:25
      김길중 께서 말씀하시기를... > 또 올립니다. > > 테이블 바꿔주고 db 알리아스를 제데로 설정하였는데...
    • 구창민
      1999.07.04 22:19
      김길중 께서 말씀하시기를... > 또 올립니다. > > 테이블 바꿔주고 db 알리아스를 제데로 설정하였는데...
    • 이태호
    • 1999.07.04 11:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.07.04 11:19
      한글은 두바이트로 되어있습니다. 즉, KeyDown에서는 처리가 안된다는 이야기죠. 복잡하게 안하시려면 On...
    • 이정욱
      1999.07.04 11:28
      음.. 조금 쉬운 방법으로는 또하나의 RichEdit을 만들어서 Visible을 꺼 놓은 상태로 그곳으로 RTF를 Load...
    • 이소라
      1999.07.04 13:33
      답장을 주셔서 감사드립니다. 그런데 제가 원하는 것은 RTF의 속성이 그대로 나타나는 것이거든요. 글...
    • 이정욱
      1999.07.04 11:23
      두가지 방법이 떠오르는 군요. 하나는 타이머를 이용한 방법. 또하나는 시스템 후킹을 이용한 방법입니다...
    • 이만준
      1999.07.05 09:11
      답변 감사드립니다... 하하...그렇게 하면 되겠군요... 저는 실행되기 전에 막는 방법만 생각했었거...
    • 이정환
    • 1999.07.04 07:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.07.04 22:14
      이정환 께서 말씀하시기를... > 전역(Global) 변수로 > lineindex, linenumber, line: integer로 선언하...
    • 이정환
      1999.07.05 05:06
      구창민님 답변에 감사드립니다. 제 코딩 실력을 보고 웃으셨겠군요. 답을 주신 것을 보고 저도 한참 웃...
    • 김길중
    • 1999.07.04 02:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.07.04 11:30
      편집기에서 마우스의 오른쪽 버튼을 눌러보세요. 그곳에 ReadOnly라는곳을 꺼주세요. 그리고 혹시 모르...
    • 이정욱
      1999.07.04 09:24
      불가능 합니다. NT서버를 옆에 붙여 놓고 같이 사용하는 수 밖에는.... 김정민 께서 말씀하시기를... ...
    • 김정민
      1999.07.04 22:40
      정말로 불가능한건가요.. 다른 누구도 아닌 정욱님께서 불가능하다고 잘라 말하시니 온몸에 힘이 쭉.. 빠집...
    • 이정욱
      1999.07.05 07:59
      포팅이라는것이... 쩝... 포팅라이브러리같은것은 없습니다. 그런것이 아니구요.. 혹시 솔라리스용 ...
    • 안치봉
      1999.07.04 04:55
      솔라리스용으로 포팅하면 됩니다. 김정민 께서 말씀하시기를... > 델파이로 만든 웹 애플리케이션을 솔...
    • 강경중
    • 1999.07.04 00:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 신호성
      1999.07.04 21:14
      강경중 께서 말씀하시기를... > 저는 퀵리포트를 처음 접해보는 퀵 초보 입니다. > 델파이에서 쿼리 콤포...
    • 손인호
      1999.07.05 17:19
      신호성 께서 말씀하시기를... > 강경중 께서 말씀하시기를... > > 저는 퀵리포트를 처음 접해보는 퀵 초...
    • 왕초
    • 1999.07.03 21:28
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김길중
    • 1999.07.03 20:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.07.03 21:09
      코드에디터 밑의 에러와 워닝을 보여주는 창을 유심히 살펴보세요.. 혹시 그곳에 Can not output 어쩌구 ...
    • 이호선
    • 1999.07.03 19:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.07.03 21:06
      LightLib는 현재 단종된 품목입니다. 미국 Luxent사에서 더이상 업그레이드와 기술지원을 안한다고 하네요...