Q&A

  • 델파이(프로시져와 함수) 부탁드립니다.,
에러코드는 중간에 설명을 하엿습니다..

고맙습니다.



procedure TForm1.btn_getClick(Sender: TObject);

var

get_power:integer;

begin



// 사용자가 입력한 자승을 매개 변수로 power 하무를 호출한다.

get_power := power(StrToInt(edt_value.Text));



//바로 위에 있는 부분에서 에러가 나거든요....

// 참고로 이것은 2의 자승구하는건데...로직은 알겠는데..

// 아직 델파이 인터페이스에 익숙하지 않아서요..

//이 프로시져가 함수를 호출해서 값을 계산한 후에 다시

//다시 프로시져에게 값을 전달한 다음 이것을 뿌리는건데.,

//책에서의 예제인데..저가 보기에도 로직은 이상이 없는데..

// 무슨 일인지 모르겟네요././.

//다음은 에러코드 입니다..

// [Error] U_power.pas(37): Undeclared identifier: 'power'

//[Error] U_power.pas(47): Type of expression must be BOOLEAN

//[Fatal Error] Project1.dpr(5): Could not compile used unit 'U_power.pas'







edt_result.Text := IntToStr(get_power);



end;



function power(num:integer):integer;

var

i, temp : integer;

begin

temp := 1;

if num := 0 then

begin

result := 1; // 0일 경우 값은 당연히 1 이다.

end else

begin

// 입력한 숫자의 2의 자승을 구하는 부분

for i := 0 to num - 1 do

begin

temp := temp * 2;

end;



result := temp;

end;

end;



end.





2  COMMENTS
  • Profile
    최용일 2001.04.19 23:26
    안녕하세요. 최용일입니다.



    첫번째 에러는 Power가 정의되지 않았다는 것입니다. 범위(scope)문제인데요. Power함수를 btn_getClick메소드위에다 선언을 하세요.



    두번째는 if문에서 대입문을 썼군요. if문은 어떤 값을 참이냐 거짓이냐로 평가하는 것입니다. 그러니까 대입문이 아니라 비교문을 써야죠.

    > if num := 0 then // := 이 아니라 =를 쓰셔야죠...



    2의 자승은 shift연산을 쓰시면 아주 빠르게 구할 수 있습니다.



    function Power(Num: Integer): Integer;

    // 양의 정수만 사용가능하도록 했습니다.

    begin

    if Num >= 0 then

    begin

    if Num = 0 then

    Result := 1

    else

    Result := (1 shl Num);

    end

    else

    Result := 0; // 음수가 들어올경우 0으로 처리...

    end;



    procedure TForm1.btn_getClick(Sender: TObject);

    var

    get_power: Integer;

    begin

    get_power := Power( StrToInt(edt_value.Text) );

    edt_result.Text := IntToStr(get_power);

    end;





    winsight wrote:

    > 에러코드는 중간에 설명을 하엿습니다..

    > 고맙습니다.

    >

    > procedure TForm1.btn_getClick(Sender: TObject);

    > var

    > get_power:integer;

    > begin

    >

    > // 사용자가 입력한 자승을 매개 변수로 power 하무를 호출한다.

    > get_power := power(StrToInt(edt_value.Text));

    >

    > //바로 위에 있는 부분에서 에러가 나거든요....

    > // 참고로 이것은 2의 자승구하는건데...로직은 알겠는데..

    > // 아직 델파이 인터페이스에 익숙하지 않아서요..

    > //이 프로시져가 함수를 호출해서 값을 계산한 후에 다시

    > //다시 프로시져에게 값을 전달한 다음 이것을 뿌리는건데.,

    > //책에서의 예제인데..저가 보기에도 로직은 이상이 없는데..

    > // 무슨 일인지 모르겟네요././.

    > //다음은 에러코드 입니다..

    > // [Error] U_power.pas(37): Undeclared identifier: 'power'

    > //[Error] U_power.pas(47): Type of expression must be BOOLEAN

    > //[Fatal Error] Project1.dpr(5): Could not compile used unit 'U_power.pas'

    >

    >

    >

    > edt_result.Text := IntToStr(get_power);

    >

    > end;

    >

    > function power(num:integer):integer;

    > var

    > i, temp : integer;

    > begin

    > temp := 1;

    > if num := 0 then

    > begin

    > result := 1; // 0일 경우 값은 당연히 1 이다.

    > end else

    > begin

    > // 입력한 숫자의 2의 자승을 구하는 부분

    > for i := 0 to num - 1 do

    > begin

    > temp := temp * 2;

    > end;

    >

    > result := temp;

    > end;

    > end;

    >

    > end.

    >

    >

  • Profile
    Mr. Larson 2001.04.19 20:31
    Power라는 함수는 x^y (x의 y승)을 구하는 수학함수입니다.



    따라서 power 함수를 사용하시려면 uses 란에 math 라고 적어주셔야 사용할 수 있습니다. ([Error] U_power.pas(37): Undeclared identifier: 'power' 의 문제)



    사용방법은 도움말을 보시면 나오지만



    power(x,y) 입니다. => x^y



    따라서 2^2 (2의 자승)을 구하려면 power(2, 2)가 되겠지요.



    그리고 이 함수의 리턴값은 Extended입니다. 따라서 integer변수에 대입하면 오류납니다.



    get_power의 선언을 동일하게 extended로 하시는 것이 좋겠네요. 정수로 선언 후 power의 결과값을 반올림하거나 소수점을 떼어내도 되겠지만 님께서 구현하는 함수의 확장성과 유연성을 위해서 꼭 사용자가 x나 y를 정수로 입력한다는 보장이 없으니.. ^^;



    그럼..... ('' )v







    winsight wrote:

    > 에러코드는 중간에 설명을 하엿습니다..

    > 고맙습니다.

    >

    > procedure TForm1.btn_getClick(Sender: TObject);

    > var

    > get_power:integer;

    > begin

    >

    > // 사용자가 입력한 자승을 매개 변수로 power 하무를 호출한다.

    > get_power := power(StrToInt(edt_value.Text));

    >

    > //바로 위에 있는 부분에서 에러가 나거든요....

    > // 참고로 이것은 2의 자승구하는건데...로직은 알겠는데..

    > // 아직 델파이 인터페이스에 익숙하지 않아서요..

    > //이 프로시져가 함수를 호출해서 값을 계산한 후에 다시

    > //다시 프로시져에게 값을 전달한 다음 이것을 뿌리는건데.,

    > //책에서의 예제인데..저가 보기에도 로직은 이상이 없는데..

    > // 무슨 일인지 모르겟네요././.

    > //다음은 에러코드 입니다..

    > // [Error] U_power.pas(37): Undeclared identifier: 'power'

    > //[Error] U_power.pas(47): Type of expression must be BOOLEAN

    > //[Fatal Error] Project1.dpr(5): Could not compile used unit 'U_power.pas'

    >

    >

    >

    > edt_result.Text := IntToStr(get_power);

    >

    > end;

    >

    > function power(num:integer):integer;

    > var

    > i, temp : integer;

    > begin

    > temp := 1;

    > if num := 0 then

    > begin

    > result := 1; // 0일 경우 값은 당연히 1 이다.

    > end else

    > begin

    > // 입력한 숫자의 2의 자승을 구하는 부분

    > for i := 0 to num - 1 do

    > begin

    > temp := temp * 2;

    > end;

    >

    > result := temp;

    > end;

    > end;

    >

    > end.

    >

    >

    • 이희정
      2001.04.20 01:37
      초보델 wrote: > 누가 아시면 좀 알려주세요. 먼저.. 데이타베이스 컴퍼넌트가 두개가 필요하겠져?...
    • Mr. Larson
      2001.04.19 20:32
      권오정 wrote: > editbox에서 필요한data를 입력하고 바로 엔터키를 치면 > 어떤 함수를 call하려고 합...
    • 권오정
      2001.04.19 20:44
    • winsight
    • 2001.04.19 20:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.04.19 23:26
      안녕하세요. 최용일입니다. 첫번째 에러는 Power가 정의되지 않았다는 것입니다. 범위(scope)문제인데요...
    • Mr. Larson
      2001.04.19 20:31
      Power라는 함수는 x^y (x의 y승)을 구하는 수학함수입니다. 따라서 power 함수를 사용하시려면 uses 란...
    • 서경환
    • 2001.04.19 19:58
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 엑소
      2001.04.20 00:27
      서경환 wrote: > ADO를 이용하여 오라클에 접속합니다. > 접속은 이상없이 되는데 쿼리 실행 후 닫으면 ...
    • Mr. Larson
      2001.04.19 20:34
      서경환 wrote: > ADO를 이용하여 오라클에 접속합니다. > 접속은 이상없이 되는데 쿼리 실행 후 닫으면 ...
    • 서경환
      2001.04.19 20:45
      Mr. Larson wrote: > 서경환 wrote: > > ADO를 이용하여 오라클에 접속합니다. > > 접속은 이상없이 되...
    • Mr. Larson
      2001.04.19 22:05
      서경환 wrote: > Mr. Larson wrote: > > 서경환 wrote: > > > ADO를 이용하여 오라클에 접속합니다. > ...
    • 김동환
      2001.04.20 11:06
      Mr. Larson wrote: > 서경환 wrote: > > Mr. Larson wrote: > > > 서경환 wrote: > > > > ADO를 이용하...
    • 왕초보
    • 2001.04.19 19:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 화랑
      2001.04.23 21:03
      델파이 바이블이라는 책을 보시면 잘 나와있습니다.. 요즘 나오는 책에는 거의다.. ASP Component 만드...
    • 네오
    • 2001.04.19 18:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 감초
      2001.04.19 20:18
      try 샐행구문... except on e:exception do begin messagedlg(e.message, ...); en...
    • 이희정
      2001.04.19 20:16
      네오 wrote: > Error 처리하는 법 > > 델파이에서 DB 관련 작업을 하다 > Error 를 만났을 경우 > DB...
    • 네오
    • 2001.04.19 18:26
    • 0 COMMENTS
    • /
    • 0 LIKES
    • format
    • 2001.04.19 17:34
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 나그네
      2001.04.19 21:17
      format wrote: > format이라는 함수여....... > 세자리가 기본이구 한자리 입력받더라두 앞에 00을 채울...
    • 아폴론
      2001.04.19 18:49
      format wrote: > format이라는 함수여....... > 세자리가 기본이구 한자리 입력받더라두 앞에 00을 채울...
    • 하기
      2001.04.19 19:42
      Format('%3s', [String Value]); 맞나??? 아마 이렇게 하면 되지 않을까요??? 아폴론 wrote: > format...
    • pch
    • 2001.04.19 08:36
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 류종택
      2001.04.19 15:14
      Var R : Real; Begin R:= 12.23; R:= Ceil(R*10) / 10; End; 꿈꾸는 바보 류.. pch wro...
    • 김동환
      2001.04.20 11:13
      류종택 wrote: > Var > R : Real; > Begin > R:= 12.23; > R:= Ceil(R*10) / 10; > End; > ...
    • 류종택
      2001.04.20 20:44
      질문을 제대로 보지도 않고 답변하여 실수를.. 죄송!! 정정하여 주신분께는 감사 !! 김동환 wrote: ...
    • 수시아
    • 2001.04.19 07:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이희정
      2001.04.19 20:22
      수시아 wrote: > 안녕하세요...고수님들... > 델파이 5.0과 ms-access 2000으로 어플을 작성하고 있습니...
    • jcw
    • 2001.04.19 07:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 모름이
      2001.04.20 00:23
      jcw wrote: > sql 검색, 입력, 수정, 삭제에 대해 소스를 좀 부탁합니다.. > 저두 어느 정도는 아는데.....
    • 송종석
      2001.04.19 19:59
      1. 검색 From절에 테이블이 두 개인데 Where절에 이를 연결할 조건이 없습니다. 오류는 생기지 않더라도 ...
    • 누비
    • 2001.04.19 06:04
    • 0 COMMENTS
    • /
    • 0 LIKES
    • jun2
    • 2001.04.19 05:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • ^-_-^
      2001.04.19 12:15
      yo` 자료실에 보면 업글된 콤포가 있습니다. 소스까지 있으니 참고하시지요!! :) 배경에 이미지 뿌...
    • 타락천사
      2001.04.19 06:35
      안녕하세여..타락임다..^^ 물론 가능합니다.. property StringIndex[AIndex] : string read GetSt...
    • 타락천사
      2001.04.19 06:38
      안녕하세여..타락임다..^^ procedure TForm1.Button2Click(Sender: TObject); var i : integer; ...
    • 나그네
      2001.04.19 07:47
      아직 인디에서 그런 기능은 본적이 없습니다. 서버에서는 타이머를 두고 수시로 접속여부를 체크하는 수 밖...