|
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;
|