GLScene v 1.1 & lazarus-0.9.31 & fpc-2.7.1 & linux x86_64

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

GLScene v 1.1 & lazarus-0.9.31 & fpc-2.7.1 & linux x86_64

Сообщение AShen » 07.11.2011 13:42:43

Всем привет!
Имеется:
linux x86_64
fpc-2.7.1
lazarus-0.9.31-33059-20111024
GLScene v 1.1 svn rev 5593

При сборке получаю такую ошибку:
GLSimpleNavigation.pas(265,11) Error: Can't determine which overloaded function to call

Ругань на такой кусок кода:

cat GLSimpleNavigation.pas|grep '/ Power'
/ Power(FZoomSpeed, Sign * WheelDelta div Abs(WheelDelta))

В модуле VectorGeometry описаны 2 функции Power:

cat VectorGeometry.pas|grep 'function Power'|grep over
function Power(const Base, Exponent: Single): Single; overload;
function Power(Base: Single; Exponent: Integer): Single; overload;

Какую из них использовать и как их явно указать?
Аватара пользователя
AShen
постоялец
 
Сообщения: 155
Зарегистрирован: 26.08.2005 10:22:44
Откуда: Новороссийск

Re: GLScene v 1.1 & lazarus-0.9.31 & fpc-2.7.1 & linux x86_6

Сообщение v-t-l » 07.11.2011 19:43:42

Судя по тому, что используется div - целочисленное деление, то наверно так
Код: Выделить всё
Power(FZoomSpeed, Integer(Sign * WheelDelta div Abs(WheelDelta)))
v-t-l
энтузиаст
 
Сообщения: 735
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: GLScene v 1.1 & lazarus-0.9.31 & fpc-2.7.1 & linux x86_6

Сообщение AShen » 08.11.2011 08:41:35

Спасибо за наводку. Получились следующие патчи:


--- /home/ashen/work/pascal/lazarus/lazarus/components/glscene/Source/GLSimpleNavigation.pas 2011-11-07 09:12:48.000000000 +0200
+++ /home/ashen/work/pascal/experementals/lazarus/components/glscene/Source/GLSimpleNavigation.pas 2011-11-08 06:46:00.000000000 +0200
@@ -262,10 +262,10 @@
begin
if lCamera.CameraStyle = csOrthogonal then
lCamera.FocalLength := FGLSceneViewer.Camera.FocalLength
- / Power(FZoomSpeed, Sign * WheelDelta div Abs(WheelDelta))
+ / Power(FZoomSpeed, Integer(Sign * WheelDelta div Abs(WheelDelta)))
else
lCamera.AdjustDistanceToTarget(
- Power(FZoomSpeed, Sign * WheelDelta div Abs(WheelDelta)));
+ Power(FZoomSpeed, Integer (Sign * WheelDelta div Abs(WheelDelta))));
end;

if snoMouseWheelHandled in FOptions then


--- /home/ashen/work/pascal/lazarus/lazarus/components/glscene/Source/Base/CurvesAndSurfaces.pas 2011-11-07 09:12:48.000000000 +0200
+++ /home/ashen/work/pascal/experementals/lazarus/components/glscene/Source/Base/CurvesAndSurfaces.pas 2011-11-08 07:29:34.000000000 +0200
@@ -66,7 +66,8 @@
ti, tni : Single;
begin
if (t=0) and (i=0) then ti:=1 else ti:=Power(t,i);
- if (n=i) and (t=1) then tni:=1 else tni:=Power(1-t,n-i);
+// if (n=i) and (t=1) then tni:=1 else tni:=Power(1-t,n-i);
+ if (n=i) and (t=1) then tni:=1 else tni:=Power(1-t,Integer(n-i));
Result:=(Factorial(n)/(Factorial(i)*Factorial(n-i)))*ti*tni;
end;

на x86_64 всё скомпилировалось.
Аватара пользователя
AShen
постоялец
 
Сообщения: 155
Зарегистрирован: 26.08.2005 10:22:44
Откуда: Новороссийск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

Рейтинг@Mail.ru