C++ to Delphi pointer conversion -
i trying convert open source c++ project delphi(berlin 10.1). uses pointers can not find way convert them delphi pointers. how can translate piece code c++ delphi? here code:
int solveall(int dragfunction, double dragcoefficient, double vi, double sightheight, double shootingangle, double zangle, double windspeed, double windangle, double** solution) { double* ptr; ptr = (double*)malloc(10*__bcomp_maxrange__*sizeof(double)+2048); double t=0; double dt=0.5/vi; double v=0; double vx=0, vx1=0, vy=0, vy1=0; double dv=0, dvx=0, dvy=0; double x=0, y=0; double headwind=headwind(windspeed, windangle); double crosswind=crosswind(windspeed, windangle); double gy=gravity*cos(degtorad((shootingangle + zangle))); double gx=gravity*sin(degtorad((shootingangle + zangle))); vx=vi*cos(degtorad(zangle)); vy=vi*sin(degtorad(zangle)); y=-sightheight/12; int n=0; (t=0;;t=t+dt){ vx1=vx, vy1=vy; v=pow(pow(vx,2)+pow(vy,2),0.5); dt=0.5/v; dv = retard(dragfunction,dragcoefficient,v+headwind); dvx = -(vx/v)*dv; dvy = -(vy/v)*dv; vx=vx + dt*dvx + dt*gx; vy=vy + dt*dvy + dt*gy; if (x/3>=n){ ptr[10*n+0]=x/3; ptr[10*n+1]=y*12; ptr[10*n+2]=-radtomoa(atan(y/x)); ptr[10*n+3]=t+dt; ptr[10*n+4]=windage(crosswind,vi,x,t+dt); ptr[10*n+5]=radtomoa(atan(ptr[10*n+4])); ptr[10*n+6]=v; ptr[10*n+7]=vx; ptr[10*n+8]=vy; ptr[10*n+9]=0; n++; } // compute position based on average velocity. x=x+dt*(vx+vx1)/2; y=y+dt*(vy+vy1)/2; if (fabs(vy)>fabs(3*vx)) break; if (n>=__bcomp_maxrange__+1) break; } ptr[10*__bcomp_maxrange__+1]=(double)n; *solution = ptr; return n; }
type tdoublearray = array[word] of double; pdoublearray = ^tdoublearray; ptr: pdoublearray; getmem(ptr, 10*sizeof(double)+324); ptr[10*n+1] := y*12; ptr[1] := n;
edit after full code adding:
argument definition: ... var solution: pdoublearray) in case usage: solution := ptr;
Comments
Post a Comment