PDA

View Full Version : ترجمه از c به پاسکال (دلفی)



DAMAVAND
یک شنبه 23 آبان 1395, 14:30 عصر
دوستان در حال برگرداندن یک پروژه اپن سورس که بزبان C++‎‎‎ نوشته شده به دلفی میباشم. منتها در بگردانندن پوینتر ها دچار مشکل شدم.

شما این خطوط مربوط به پوینتر رو چطور به دلفی ترجمه میکنید؟

double* ptr;
ptr = (double*)malloc(10*sizeof(double)+324);

ptr[10*n+1]=y*12;


و

ptr[1]=(double)n;
int n;
double** Solution;
*Solution = ptr;

Mahmood_M
دوشنبه 24 آبان 1395, 01:11 صبح
اشاره گر Ptr باید به یک آرایه از Double اشاره کنه
به خاطر محدودیت سایز آرایه هم باید Index ش از نوع Word باشه
بخش اول :

type
DoubleArray = Array[Word] of Double;

var
Ptr : ^DoubleArray;
Y : Double;
N : Integer;
begin
Ptr := AllocMem(10*SizeOf(Double)+324);
Ptr^[10*N+1] := Y*12;
end;
به جای AllocMem می تونید از GetMem هم استفاده کنید، تفاوت اینه که AllocMem مقادیر اولیه رو با مقدار صفر پر می کنه
بخش دوم :

type
DoubleArray = Array[Word] of Double;
PDoubleArray = ^DoubleArray;

var
Ptr : ^DoubleArray;
Solution : ^PDoubleArray;
N : Integer;
begin
Ptr^[1] := N;
Solution := @Ptr;
end;
البته فرض بر اینه که هر دو بخش با هم استفاده میشه و در بخش دوم قبلا با AllocMem برای Ptr فضا درنظر گرفته شده
برای استفاده از Solution هم می تونید به صورت زیر عمل کنید :

ShowMessage(FloatToStr(Solution^^[1]));
و در نهایت هم باید با FreeMem مقدار فضایی که برای Ptr درنظر گرفته شد رو آزاد کنید :

FreeMem(Ptr);