PDA

View Full Version : سوال: تبدیل کد از زبان c به دلفی



aj1shir
دوشنبه 19 دی 1390, 15:46 عصر
سلام دوستان
کسی میتونه این کد رو از زبان c به زبان دلفی تبدیل کنه
u16* mb_indices
تا اونجا که میدونم این خط داره mb_indices رو از نوع u16 تعریف میکنه و با فکر کنم که علامت سوال هم معنی @ در دلفی باشه
این دومیه رو مطمئن نیستم
خب حالا یکی بیاد بگه که این u16 معادل چه نوع داده ایی تویه دلفی هست

Mahmood_M
دوشنبه 19 دی 1390, 17:01 عصر
این عبارت در زبان C ، یک اشاره گر ( Pointer ) با نام " mb_indices " و از نوع " u16 " تعریف می کنه ، نوع u16 یک نوع عددی هست ، مثل Integer در دلفی اما مقدارش 16 بیتی هست و 2 بایت فضا اشغال میکنه ، باید از نوع WORD یا SHORT در دلفی استفاده کنید که 2 بایت هستند ( نوع Integer یک مقدار 32 بیتی و 4 بایت هست )
معادل علامت * در دلفی ، ^ هست ، مثال :

var
P : ^WORD;
برای اختصاص مقدار به یک اشاره گر از عملگر " @ " استفاده میشه و برای دریافت مقدار درون آدرس اشاره گر هم باید بعد از نام متغیر اشاره گر ، علامت " ^ " رو قرار بدید ، مثال :

var
P : ^WORD;
I : WORD;
begin
I := 2;
P := @I;
ShowMessage(IntToStr(P^));
end;
موفق باشید ...

aj1shir
دوشنبه 19 دی 1390, 17:14 عصر
دستتون درد نکنه آقا محمود گل
خودمم این حدس رو زده بودم
تا اینجا درست
پس این میتونه همون PWord داخل دلفی باشه
اما مشکل من از جایی آغاز میشه که میاد از این متغییر مثل یه آرایه استفاده میکنه و ادامه اون کد هم اینه


for (unsigned int j = 0; j < meshBuffer->getIndexCount(); j += 3)
{
int v1i = mb_indices[j + 0];
int v2i = mb_indices[j + 1];
int v3i = mb_indices[j + 2];



ببینید من در مورد pointer ها در دلفی یه چیزایی بلدم فقط میخواستم اگه میشه یه توضیحی دز مورد PWord و این نوع داده ها بدین

Mahmood_M
جمعه 23 دی 1390, 19:22 عصر
اما مشکل من از جایی آغاز میشه که میاد از این متغییر مثل یه آرایه استفاده میکنه و ادامه اون کد هم اینه
در ++C یک متغیر اشاره گر می تونه مستقیما یک آرایه ی دینامیک باشه ، یعنی در کدی که در اختیار دارید باید دنبال چیزی شبیه به این بگردید :

mb_indices = new U16[n];
که متغیر n قبل از این خط باید مقداردهی شده باشه ، یا با cin یا ... ، برای دادن نظر قطعی باید کد کامل رو دید ولی به احتمال زیادی ! متغیر mb_indices قبل از کدهایی که قرار دادید ، در جایی از کد به صورت یک آرایه ی دینامیک مقداردهی میشه
در دلفی برای استفاده از آرایه های دینامیک نیازی نیست که متغیری به عنوان اشاره گر تعریف کنید ، کافیه یک آرایه بدون مقداردهی طولش ایجاد کنید و توسط تابع SetLength طولش رو در طول اجرای برنامه تعیین کنید ، برای نمونه :

var
D : array of DWORD;
N, I : Integer;
begin
N := 5;
SetLength(D, 5);
for I := 0 to Length(D) - 1 do
D[I] := I;
ShowMessage(IntToStr(D[2]));
end;


ببینید من در مورد pointer ها در دلفی یه چیزایی بلدم فقط میخواستم اگه میشه یه توضیحی دز مورد PWord و این نوع داده ها بدین
نوع داده PWord و سایر نوع های داده ای که به صورت PX ( که X یک نوع استاندارد دلفی هست ) معرفی می شن ، معمولا یک اشاره گر هستند به نوع X ، مثلا PWord اشاره گری به نوع Word یا PInteger یا PINT اشاره گری به نوع Integer هست و ...
اگر به تعریف PWord توجه کنید ، به عبارت زیر می رسید :

PWORD = ^Word;
که همون اشاره گری به نوع Word هست ، یا برای PInteger به صورت زیر هست :

PInteger = ^Integer;
موفق باشید ...