View Full Version : ترجمه از c به پاسکال (دلفی)
DAMAVAND
یک شنبه 23 آبان 1395, 15: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, 02: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);
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.