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

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -