Q&A

  • 최용일님, 이정욱님 답변 바람다..ㅠㅠ
안녕하세여.. 타락임다..^^



제가 원시초보일때부터 궁금해왔던건데, 아직도 모르겠어여...



도저히 이해가 안가서 그런 문장 볼때마다 머리에 안들어 갈려구 빠작빠작 거려서



억지로 집어넣느라구 피곤합니다..



부디 자세한 답변 바람다..꾸벅..



":=" 는 왼쪽 변수(변수, 함수포인터 등등)에 오른쪽 변수를 대입하는(쉽게 말해 집어



넣는) Operator 이자나여..



보통 서브클래싱 할때 ":=" 오른쪽에 메세지 받을 함수를 적져..



Application.OnMessage := AppMessage;



":=" 왼쪽이 원래 함수고, 오른쪽이 새로운 함수져..



그동안 곰곰히 생각해봤는데,



전 이런류의 문장이 도저히~ 이해가 안가여..ㅠㅠ



문장을 보면, Application.OnMessage 함수 포인터에 AppMessage 함수포인터를



넣는 다는 의미자나여.



그렇다면 기능을 본다면 Application.OnMessage가 AppMessage로 작동하겠져.--



그리고 AppMessage 는 변함이 없겠져..-- 그렇게 본다면,



AppMessage := Application.OnMessage;



라고 사용되야 한다구 생각하는데.....ㅠㅠ





가능하면 메모리와 어드레스로 설명해 주심 제가 쉽게 이해할수 있을거 같은데여..^^;;;



꼭 답변 바랍니다..

1  COMMENTS
  • Profile
    최용일 2000.06.15 01:33
    안녕하세요. 최용일입니다.



    결론부터 말하자면 가능합니다. 때론 그렇게 사용해야 될 때도 있구요...



    델파이에서는 함수포인터라고 하는 변수형을 지원합니다. 볼랜드파스칼에서도 있었던



    데이타형인데요. 이건 함수(procedure, function)처럼 단독으로 실행도 가능하고요



    변수처럼 연산식의 오른쪽, 왼쪽 어디에도 쓸수가 있습니다. 여기에 어떤 값을 대입하는



    것도 가능하고요. 델파이에서의 이벤트 메소드는 모두 이 함수포인터입니다. 변수선언은



    아래와 같은 방식으로하고요.



    type

    TIntegerFunction = function: Integer;

    TProcedure = procedure;

    TStrProc = procedure(const S: string);

    TMathFunc = function(X: Double): Double;

    var

    F: TIntegerFunction;

    Proc: TProcedure;

    SP: TStrProc;

    M: TMathFunc;



    사용할 때는 이벤트메소드처럼 Proc := SomeProcedure이런식으로 대입할 수도 있고요



    begin

    Proc := SomeProcedure;

    Proc; // SomeProcedure가 실행되겠죠...

    end;



    위와 같이 서브루틴(procedure, function)처럼 단독으로도 실행할 수 있습니다.



    AppMessage := Application.OnMessage; 를 예를 들었는데 AppMessage가 함수포인터라면



    가능합니다. Application.OnMessage이 메소드값을 원래대로 복원시켜야될때는 이렇게



    많이 사용하죠. 이런 경우는 변수로서의 기능을 하는것입니다.



    Application이 메세지를 받으면 OnMessage메소드를 실행함니다. 여기에 어떤 함수포인터가



    대입되어 있으면 그 함수가 실행이 되겠죠... 아래처럼...



    begin

    Proc := SomeProcedure;

    Proc; // SomeProcedure가 실행되겠죠...

    end;



    아래의 경우는 단지 AppMessage에 Application.OnMessage가 대입되는것밖에 없습니다.

    AppMessage := Application.OnMessage;



    이렇게 한다고 해서 Application이 AppMessage를 호출하는 것이 아니라 OnMessage에



    들어가 있는 함수포인터를 실행합니다. 그냥 변수의 예를 들면 A := B; 하고 B := A;하고



    다른 것과 같습니다.



    흠... 말이 좀 횡설수설했는데요..



    A := B;하고 B := A;가 다르다는 것만 아시면 둘의 차이점이 이해가 가시리라고 생각됩니다.



    ^^ 이해가 되셨나요? 되셨으면... 허허...

    ^^ 항상 즐코하세요.



    타락천사 wrote:

    > 안녕하세여.. 타락임다..^^

    >

    > 제가 원시초보일때부터 궁금해왔던건데, 아직도 모르겠어여...

    >

    > 도저히 이해가 안가서 그런 문장 볼때마다 머리에 안들어 갈려구 빠작빠작 거려서

    >

    > 억지로 집어넣느라구 피곤합니다..

    >

    > 부디 자세한 답변 바람다..꾸벅..

    >

    > ":=" 는 왼쪽 변수(변수, 함수포인터 등등)에 오른쪽 변수를 대입하는(쉽게 말해 집어

    >

    > 넣는) Operator 이자나여..

    >

    > 보통 서브클래싱 할때 ":=" 오른쪽에 메세지 받을 함수를 적져..

    >

    > Application.OnMessage := AppMessage;

    >

    > ":=" 왼쪽이 원래 함수고, 오른쪽이 새로운 함수져..

    >

    > 그동안 곰곰히 생각해봤는데,

    >

    > 전 이런류의 문장이 도저히~ 이해가 안가여..ㅠㅠ

    >

    > 문장을 보면, Application.OnMessage 함수 포인터에 AppMessage 함수포인터를

    >

    > 넣는 다는 의미자나여.

    >

    > 그렇다면 기능을 본다면 Application.OnMessage가 AppMessage로 작동하겠져.--

    >

    > 그리고 AppMessage 는 변함이 없겠져..-- 그렇게 본다면,

    >

    > AppMessage := Application.OnMessage;

    >

    > 라고 사용되야 한다구 생각하는데.....ㅠㅠ

    >

    >

    > 가능하면 메모리와 어드레스로 설명해 주심 제가 쉽게 이해할수 있을거 같은데여..^^;;;

    >

    > 꼭 답변 바랍니다..

    • 역사
      2000.06.15 03:42
      Ansi Pascal - Turbo Pascal - Borland Pascal - Delphi 숙제는 스스로 하세요. 김민석 wrote: > ...
    • 파란달
    • 2000.06.15 03:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2000.06.15 15:21
      파란달 wrote: > 폼의 Border에 비트맵을 올리고자 합니다. > 혹 아시는 분 계시면 한수 부탁합니다. ...
    • 파란달
      2000.06.15 23:48
      먼저 관심을 가져 주신 조규춘씨에게 감사 드립니다. 제가 질문을 잘못했나요? 조규춘씨가 알려주신 ...
    • 최석기
      2000.06.15 03:53
      타락천사 wrote: > 안녕하세여.. 타락임다..^^ > > 스트링그리드를 쓸것인가? 디비그리드를 쓸것인가 ...
    • 류응철
    • 2000.06.15 02:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2000.06.15 15:36
      류응철 wrote: > 아무리 찾아도 안나온다.. 트라이얼 버전이라고 나온게... 6.2 달랑하나... > > 공부...
    • 류응철
      2000.06.15 19:31
      조규춘 wrote: > 류응철 wrote: > > 아무리 찾아도 안나온다.. 트라이얼 버전이라고 나온게... 6.2 달랑...
    • 쵸코
    • 2000.06.15 02:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이명호
    • 2000.06.15 01:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강호규
      2000.06.15 05:27
      이명호 wrote: > 프로그램에서 백업 버튼을 누르면 mdb화일을 복사하여 다른 폴더에 넣고, > 복구 버튼을...
    • 류동기
    • 2000.06.15 01:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.06.15 01:44
      안녕하세요. 최용일입니다. 다음과 같이 포팅해서 사용하세요. function WritePrn(Str: PChar; Len: ...
    • 이성희
    • 2000.06.15 00:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강호규
      2000.06.15 05:41
      이성희 wrote: > 안녕하세요! > 전 델파이 왕초보 프로그래머랍니다. > 요즘 세금계산서 출력하는 프로...
    • 최용일
      2000.06.15 01:33
      안녕하세요. 최용일입니다. 결론부터 말하자면 가능합니다. 때론 그렇게 사용해야 될 때도 있구요... ...
    • 타락천사
      2000.06.15 00:39
      안녕하세여.. 타락임다..^^ 허걱.. DataModul 없이 그 많은 디비를 어케 관리해여... 기냥 File/New ...
    • 사발울다
      2000.06.15 01:03
      타락님이 말씀하신 데이타모듈은 어떤식으로 사용하나엽... 저두 해볼려구 시도 했다가 실패해서리...^^...
    • 까마귀
      2000.06.15 19:21
      사발울다 wrote: > 타락님이 말씀하신 데이타모듈은 어떤식으로 사용하나엽... > > 저두 해볼려구 시도...
    • 조복기
      2000.06.15 01:41
      델파이초보 wrote: > TTable 과 TQuery에대 속성과 이벤트에 대해 자세히 나온곳을 알고 싶습니다. > 델...
    • 델파이초보
      2000.06.15 18:20
      조복기 wrote: > 델파이초보 wrote: > > TTable 과 TQuery에대 속성과 이벤트에 대해 자세히 나온곳을 알...
    • 델파이초보
      2000.06.15 19:00
      델파이초보 wrote: > 조복기 wrote: > > 델파이초보 wrote: > > > TTable 과 TQuery에대 속성과 이벤트...
    • 류응철
    • 2000.06.14 23:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2000.06.15 15:39
      류응철 wrote: > 지금 인스톨쉴드 프로패셔널6.2를 받았거든요... 15일짜리...ㅠ.ㅠ > > 근데... 님께...
    • Faster
    • 2000.06.14 22:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2000.06.15 03:21
      델파이는 아직 Windows CE OS를 지원하지 않습니다.
    • 최석기
      2000.06.15 03:48
      델입문 wrote: > 델 시작한지 얼마 안된 초보입니다. > > DBGrid 에서 StringGrid 처럼 FixedCols 을 ...
    • 델입문
      2000.06.15 04:21
      감사합니다!. 되는군요. 염치없지만 질문하나 더 할게요. 알려주신 대로 사용하니 FixedCols로 지정...
    • 김일영
    • 2000.06.14 21:05
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.06.14 21:31
      안녕하세요. 최용일입니다. 폼의 ShowHint속성을 True로 해주고 StatusBar에 판넬을 하나 만들어준후 아...
    • 조규춘
      2000.06.15 15:48
      헤헤~! 최용일님이 설명한것도 맞는 이야기이지요.. 물론 저도 이용하는 방법이구요... 그런데 한가...
    • 최용일
      2000.06.15 17:54
      안녕하세요. 최용일입니다. 주로 밤사이 활동하시네요. 동호회는 아직 허락이 않