امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
کمک برای تبدیل کد ها به vb
نویسنده پیام
mehdi0016 آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 10
تاریخ عضویت: آبان ۱۳۸۵

تشکرها : 5
( 1 تشکر در 0 ارسال )
ارسال: #1
myBB  کمک برای تبدیل کد ها به vb
سلام
من دارم یه برنامه نسبتا ساده رو از ++C به vb6 تبدیل می کنم ولی بعضی جاهاش گیر کردم...
کد:
char    *m_ReadBuffer, *m_WriteBuffer;
m_ReadBuffer = (char *)malloc(SIZE * SIZE);
m_WriteBuffer = (char *)malloc(SIZE * SIZE);
...
#define SETBUFFER(buf,x,y,value)    (buf[((y) * WATER_SIZE) + (x)] = value)
#define READBUFFER(buf,x,y)    (buf[((y) * WATER_SIZE) + (x)])
توی کد بالا اول 2 تا pointer تعریف کرده ولی setbuffer و readbuffer چیه ؟ تابع یا ... ؟
معنی این چیه؟ m_Display.Invalidate . میشه گفت refresh کردن صفحه نمایش یا picturebox ؟
در ضمن در حالت دیباگ توی ++VC چطور میشه مقدار موجود در یک pointer رو دید ؟ همش هگز خود اشاره گر رو نشون میده.
خیلی ممنون
۱۲-خرداد-۱۳۸۷, ۱۵:۱۸:۰۵
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #2
RE: کمک برای تبدیل کد ها به vb
نقل قول: توی کد بالا اول 2 تا pointer تعریف کرده ولی setbuffer و readbuffer چیه ؟ تابع یا ... ؟

اونها ماکرو هستند که تعریف کرده . ماکروها تابع نیستند بلکه یه قسمت کد هستند که بشکل تابع نوشته میشن . ماکروپروسسور ( قسمتی از برنامه کامپایلر) قبل از کامپایل شدن برنامه ، مقدار اونها رو با کد اصلی جانشین میکنه . مثلا اگر در قسمتی از برنامه بنویسیم :

کد:
SETBUFFER(buf,2,3,5);

این کد با مقدار زیر جانشین میشه ( در واقع انگار کد زیر رو نوشتیم ) :

کد:
(buf[((3) * WATER_SIZE) + (2)] = 5)

نقل قول: معنی این چیه؟ m_Display.Invalidate . میشه گفت refresh کردن صفحه نمایش یا picturebox ؟

این همون مثل متد refresh هست در وی بی 6 . کارش اینه که باعث میشه ویندوز به برنامه یک پیغام WM_PAINT بفرسته و باعث بشه که picturebox دوباره خودش رو ترسیم کنه ( معمولا تغییراتی که تو حافظه انجام دادیم رو حالا ترسیم کنیم )

نقل قول: در حالت دیباگ توی ++VC چطور میشه مقدار موجود در یک pointer رو دید ؟

توی variable Window میتونی این رو ببینی . روی قسمت خالی ToolBar کلیک راست بکن و بعد این گزینه رو انتخاب کن تا پنجره اش باز بشه .

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۲-خرداد-۱۳۸۷, ۱۹:۱۰:۵۶
ارسال‌ها
پاسخ
تشکر شده توسط : mehdi0016
mehdi0016 آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 10
تاریخ عضویت: آبان ۱۳۸۵

تشکرها : 5
( 1 تشکر در 0 ارسال )
ارسال: #3
RE: کمک برای تبدیل کد ها به vb
ببخشید این قضیه ماکرو ها رو درست نفهمیدم. مثلا اگر SIZE=256 ، x=5 , y=3 باشه اونوقت با توجه به :
کد:
#define SETBUFFER(buf,x,y,value)    (buf[((y) * WATER_SIZE) + (x)] = value)
#define READBUFFER(buf,x,y)    (buf[((y) * WATER_SIZE) + (x)])
اگر داشته باشیم :
کد:
SETBUFFER (m_WriteBuffer,i,j,value)
و
READBUFFER(m_ReadBuffer,x,y)
اونوقت در setbuffer و readbuffer چه اتفاقی میوفته ؟
ممنون
۱۲-خرداد-۱۳۸۷, ۱۹:۴۸:۱۲
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #4
RE: کمک برای تبدیل کد ها به vb
هر زمان ، در هر جایی از کد برنامه ، اگر شما کد زیر رو بنویسید :

کد:
SETBUFFER (m_WriteBuffer,i,j,value)

دقیقا مثل این میمونه که نوشته باشی ( در واقع خط زیر جایگزین کد بالا میشه قبل از کامپایل )

کد:
m_WriteBuffer[((j) * 256) + (i)] = value

و همینطور :
کد:
READBUFFER(m_ReadBuffer,x,y)

جانشین میشه با :

کد:
m_ReadBuffer[((y) * 256) + (x)]


ماکرو ها کدهایی هستند که حالت کلی دارند و در قسمت های مختلف برنامه باید با پارامتر های مختلف نوشته بشن . بجای اینکه ما هر بار این قسمت از کد رو در برنامه تکرار کنیم ، یک ماکرو مینویسیم و هر جا که بخواییم اون ماکرو رو با پارامتر های دلخواهمون مینویسم میزنیم . قبل از کامپایل این ماکرو ها به کداصلی خودشون تبدیل میشن ( جانشین میشن ) و بعد برنامه کامپایل میشه .

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
(آخرین ویرایش در این ارسال: ۱۲-خرداد-۱۳۸۷, ۲۱:۰۶:۳۴، توسط Mamad2003.)
۱۲-خرداد-۱۳۸۷, ۲۱:۰۴:۳۶
ارسال‌ها
پاسخ
تشکر شده توسط : mehdi0016
mehdi0016 آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 10
تاریخ عضویت: آبان ۱۳۸۵

تشکرها : 5
( 1 تشکر در 0 ارسال )
ارسال: #5
RE: کمک برای تبدیل کد ها به vb
شرمنده اینقدر سوال میکنم...تازه کارم دیگه Shy
این علامت >> و << چه عملی انجام میدن ؟ مثلا :
کد:
#define RGB32(r,g,b)    ((r << 16) + (g << 8) + b)
و یه خواهش دیگه، میشه ای سورس رو یه نگاه بندازید ؟ مشکل اصلی من اینه که میخوام طول و عرض تصویرم متفاوت باشه ولی توی این سورس تصویر مربع فرض شده؛ برای همین برای من یه کم پیچیدس...
download
خیلی ممنون
۱۳-خرداد-۱۳۸۷, ۱۵:۱۳:۰۲
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #6
RE: کمک برای تبدیل کد ها به vb
نقل قول: این علامت >> و << چه عملی انجام میدن ؟

اینها در اینجا شیف های بیتی هستند . شیفت به سمت چپ ( اگر اعداد رو در مبنای 2 فرض کنیم شیفت به سمت چپ باعث اضافه کردن 0 به بیت های سمت راست میشه و بیت های قبلی به سمت چپ منتقل میشن )
در واقع اینجا این ماکرو کاری نمیکنه جز اینکه یه مقدار رنگی RGB رو از مقادیر قرمز ، آبی و سبز بشکل 32 بیتی میسازه . ما عملگر شیف بیتی در وی بی نداریم ولی توی وی بی تابع RGB داریم که اینکار رو برات انجام میده .
http://msdn.microsoft.com/en-us/library/...S.80).aspx


تبدیل برنامه های MFC به VB تا حدودی مشکله . کلا چون سیستم برنامه نویسی این دوتا با هم فرق میکنه ! شما توی خط زیر باید بتونی سایز رو تغییر بدی :

کد:
CRect bounds(0,0,WATER_SIZE - 1,WATER_SIZE - 1);

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۳-خرداد-۱۳۸۷, ۱۸:۳۱:۵۵
ارسال‌ها
پاسخ
تشکر شده توسط : mehdi0016


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] نوشتن درایور برای FileSystem Monitor برای همه نسخه های ویندوز nImaarek 1 1,605 ۲۴-خرداد-۱۳۹۷, ۲۰:۳۴:۰۰
آخرین ارسال: NO DONGLE
  تبدیل کد بسکام به کدویزن cloner006 7 7,089 ۰۳-آذر-۱۳۹۵, ۰۴:۱۸:۰۱
آخرین ارسال: eny.m
Question تبدیل infix به postfix به وسیله لیست پیوندی zohreh.ma 3 3,813 ۱۳-اردیبهشت-۱۳۹۵, ۱۵:۱۷:۵۶
آخرین ارسال: hartan
  [سوال] تبدیل دسیمال 24 بیت به باینری a.mehran 1 2,116 ۲۳-دى-۱۳۹۳, ۱۶:۳۷:۳۶
آخرین ارسال: NO DONGLE
Question [سوال] تبدیل نوع متغیر (float به unsigned char) در زبان سی PRO 3 7,754 ۰۹-مرداد-۱۳۹۲, ۲۰:۱۶:۰۰
آخرین ارسال: PRO
  تبدیل c به اسمبلی فروم باز 9 15,186 ۲۵-خرداد-۱۳۹۲, ۱۵:۱۴:۴۶
آخرین ارسال: cinapa
Question تبدیل پیشوندی به پسوندی؟ Sadie 0 5,287 ۲۶-آذر-۱۳۸۸, ۲۱:۵۶:۵۵
آخرین ارسال: Sadie
  کمک کمک برنامه تبدیل Infix به prefix yones_shaban 1 5,259 ۱۶-تير-۱۳۸۸, ۲۲:۰۵:۳۲
آخرین ارسال: amirjan
  الگوریتم تبدیل postfix به infix و بالعکس hamed_Arfaee 1 7,501 ۱۱-آذر-۱۳۸۷, ۱۶:۳۴:۵۵
آخرین ارسال: hamed_Arfaee
  تبدیل قطعه کد «سی» به «وی بی» چند مورد اشتباه دارم mojtabamalaekeh 1 2,615 ۰۵-تير-۱۳۸۷, ۱۸:۵۳:۴۰
آخرین ارسال: Mamad2003

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS