Q&A

  • 델파이6에서는 함수를 선언하지않고 구현만으로 사용이 되는지요?
안녕하세요^^ 델파이를 시작한 초보자입니다.
함수에 관해서 질문이 있습니다.
함수선언부분을 배우지않고 함수를 하나 구현했습니다..-_-a
help를 참고해서 한번 해보았는데..문제는 함수를 선언하지않고 사용했다는데 있습니다.
책을 찾아보니 함수는 선언후 구현을 해야 사용할수있다는데 전 그것도 모르고 사용한것이지요..
그러다가 선언을 해보자하고 했더니 덜컥 에러가 나더군요. 선언하지않고 그냥 구현만하고 쓸때는 아무문제가 없는데 말입니다. 질/답 게시판을 검색을 해보니 선언부와 실제부가 틀려서 나는 에러였습니다. 나중에 여러소스를 보면서 선언부와 실제부를 어케 적는건지 알아내서 이것을 고쳐서 쓰긴합니다만...
문제는 선언을 하지않고도 함수를 사용할수있는가 하는것입니다.

예)
type이나 private, public에 선언하지않고 implementation 밑에 구현만한경우
implementation
......
function A(x:string):integer; //함수선언없이 구현만..
~구현~
end;
......
procedure.........//프로시저 안에서
.....
i:=A(edtInput.text); //함수 호출..
.....

이런경우 저같은 경우는 아무문제없이 호출해서 사용했습니다만 이경우 나중에 문제가 생길수있는지요? 그리고 저렇게 구현만된 함수의 경우 public으로 사용되는지 아니면 private로 사용이 되는지요?
질문이 너무 길어 죄송합니다..
언제나 즐거운 시간되시구요..행복하세요..^^
2  COMMENTS
  • Profile
    홍성락 2002.10.04 13:50
    hsr//////////////////////////////////////////////////////////////
    델파이6뿐만이 아니라 원래의 파스칼에서도 사용되던 Local declarations입니다. 원문데로 used in the routine's statement block으로 지역선언입니다.
    본래 파스칼에서 위처럼

    1. function A(x:string):integer; //함수선언없이 구현만..
       이면 델파이에서의 폼에 전속되어 어디서나 쓰는것이 아니라 선언된 이후의 함수들이 사용가는한 지역적 함수선언입니다.
       델파이처럼 GUI에선 폼에 종속하려면 위처럼선언하고 몸체엔 클래스명도 써야 됩니다. function TForm1.A(x:string):integer;

    2.또하나의 지역선언 방법은 함수내에서만 사용가능합니다, 아래 예
    procedure DoSomething(S: string);
    var
      X, Y: Integer;
      procedure NestedProc(S: string);
      begin
        ...
      end;
    begin
       ...
      NestedProc(S);
       ...
    end;

    위에 2가지 말구도 여러 선언방식이 있는데요, 다 용도에 맞게 사용하시면 됩니다.
    주의점은 그 선언한 함수를 누가 사용하게 될지, 확장식으로 추가 수정시 사용편리, 컴파일시 포함여부, 유지보수 등을 고려해서 사용하시는게 좋을듯합니다.
  • Profile
    조현석 2002.10.05 05:32
    자세한 답변을 해주셔서 정말 감사드립니다^^
    앞으로도 열심히 하겠습니다..그럼 좋은 시간 되세요..^^