C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[52290] 델파이 소스를 컴파일하는데, 문제점 2가지..
DoyongID [doyongid] 1553 읽음    2008-02-15 14:49
dcc32로 델파이소스를 obj로 변환해서 쓰고 있습니다..

그런데, 몇가지 부분에서 컴파일이 안되는 현상이 있는데요..

1. PAS파일에서 쓰이고 있는 sin(), cos()함수를 인식못합니다. System.sin(), System.cos()으로 고쳐봤는데, 역시나... Math.hpp라는 것도 있길래 그걸 써봤는데, Sinh(), Cosh() 뭐 그런거만 있고..

2. PAS에서 쓰이는 함수의 인자중에 THandle형이 있는데, 이걸 빌더에서 어떻게 호출하나요? 그걸로 BitBlt()에 핸들로 넘기는데, 빌더에서 Canvas->Handle값을 넘겨주면 형이 안맞다는 식으로 에러가 뜨네요..

문제가 되는 함수는 아래것입니다.. 첫번째 인자의 THandle과 소스 후반 부분의 sin, cos요..

procedure TCircleScope.Draw(HWND : THandle; WaveData : TWaveData; X, Y : Integer);
        var i, Rd : Integer; Angle : Single; R, L : SmallInt;
       begin
       if FrmClear then begin
        VisBuff.Canvas.Pen.Color := BkgColor;
        VisBuff.Canvas.Brush.Color := BkgColor;
        VisBuff.Canvas.Rectangle(0, 0, VisBuff.Width, VisBuff.Height);
         if UseBkg then VisBuff.Canvas.CopyRect(Rect(0, 0, BackBmp.Width, BackBmp.Height), BackBmp.Canvas, Rect(0, 0, BackBmp.Width, BackBmp.Height));
       end;

        VisBuff.Canvas.Pen.Color := PenColor;
              R := LOWORD(WaveData[0]);
              L := HIWORD(WaveData[0]);
              Rd := Trunc(((R + L) / (2 * 65535)) * ScopeOff) + ScopeRad;
              VisBuff.Canvas.MoveTo(X, Y + Rd);

         for i := 1 to 254 do begin
             Angle := (i /256) * (6.28);
              R := LOWORD(WaveData[i * DrawRes]);
              L := HIWORD(WaveData[i * DrawRes]);
              Rd := Trunc(((R + L) / (2 * 65535)) * ScopeOff) + ScopeRad;

              case DrawType of
                0 : VisBuff.Canvas.lineto(X + Trunc(sin(Angle) * Rd), Y + Trunc(cos(Angle) * Rd));

                1 : begin
                      VisBuff.Canvas.MoveTo(X, Y);
                      VisBuff.Canvas.lineto(X + Trunc(sin(Angle) * Rd), Y + Trunc(cos(Angle) * Rd));
                    end;

                2 : VisBuff.Canvas.Pixels[X + Trunc(sin(Angle) * Rd), Y + Trunc(cos(Angle) * Rd)] := PenColor;
              end;
         end;

              R := LOWORD(WaveData[0]);
              L := HIWORD(WaveData[0]);
              Rd := Trunc(((R + L) / (2 * 65535)) * ScopeOff) + ScopeRad;
              VisBuff.Canvas.lineto(X, Y + Rd);

          BitBlt(HWND, 0, 0, VisBuff.Width, VisBuff.Height, VisBuff.Canvas.Handle, 0, 0, srccopy)
       end;

+ -

관련 글 리스트
52290 델파이 소스를 컴파일하는데, 문제점 2가지.. DoyongID 1553 2008/02/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.