PDA

View Full Version : تعیین تکلیف اشاره گره در VB.NET



bashir_nashi
شنبه 19 آبان 1386, 20:52 عصر
سلام
من می دونم که وی بی اشاره گر نداره ولی شنیدم که برای پیاده سازی اون تو وی بی میشه یه کارهایی کرد. تو سرچی هم که اینجا کردم یه اشاراتی شده بود.
می خوام اگه کسی می دونه چه چوری میشه همچین کاری کرد اینجا بزاره.
ممنون

maminb
چهارشنبه 29 خرداد 1387, 16:38 عصر
لطفا منظورتون رو دقیق تر بگید تا ببینم کاری از دستم بر میاد یا نه.

__H2__
یک شنبه 02 تیر 1387, 23:55 عصر
سلام
در جای دیگری هم این را گفته ام، در واقع تمام متغیرات نوع Class اشاره گر هستند و نیز پارامترهای توابع با کلید ByRef .

اگر شما واقعاً مفهوم اشاره گر را بدانید کد زیر به وضوح این مطلب را نشان میدهد



Dim v1 As ClassName

Dim v2 As ClassName

v1 = New ClassName

v2 = v1

v1.VariantName = 123

' See value v2.VariantName v2.VariantName is 123 => v1 & v2 is pointer.
Stop

morteza_261
سه شنبه 04 تیر 1387, 02:00 صبح
سلام
اگر شما واقعاً مفهوم اشاره گر را بدانید کد زیر به وضوح این مطلب را نشان میدهد

سلام
اگر امکانش هست در باره مفهوم اشاره گر کمی توضیح دهید

Chabok
سه شنبه 04 تیر 1387, 09:34 صبح
با سلام

اشاره گر در زبان های سطح پایین و سطح میانی نوعی بود از جنس آدرس حافظه که به خانه های حافظه به طور مستقیم اشاره میکرد .

یکی از استفاده های آن هم فراخوانی توابع با پارامترهایی که بصورت فراخوانی با ارجاع تعریف میشد بود .
که شما آدرس حافظه رو در اختیار تابع قرار میدین و تابع به صورت مستقیم میرفت سراغ حافظه و هر تغییری میخواستین بدین روی حافظه میدادین و بنابر این مقدار آن خانه حافظه تغییر می کرد .

یکی دیگه از مزیت های اشاره گر ها که باز هم همون دسترسی مستقیم به حافظه بود این بود که شما به هر خانه از حافظه که دوست داشتین اشاره میکردین و محتوای آن رو میخوندین و یا تغییر میدادین .
کاری که بسیاری ار برنامه های Injection و یا مثلا Trainer های بازی ها انجام میدهند .

که فکر نمیکنم در دات نت چنین امکاناتی به برنامه نویس داده بشه .

موفق باشید . خدانگهدار

__H2__
چهارشنبه 05 تیر 1387, 02:05 صبح
سلام
توضیح مثالی که زدم:
اگر v1 و v2 اشاره گری به مقدار New ClassName نبودند، باید وقتی یکی را تغییر میدادی، دیگری تغییر نمی کرد، مثل نمونه دو Integer که از هم کاملاً متفاوت هستند.

در دات نت آن اشاره گر صریح ++C را نداریم ولی اگر اشیایی که با آنها کار میکنم Class باشند، در زمان نقل و انتقال با اپراتور = فقط اشاره گر آن کلاسس منتقل میشود و ما میتوانیم از نقاط مختلف برنامه و با متغییرهای مختلف و نام های مختلف یک دیتای واحد را دستکاری کنیم.



که فکر نمیکنم در دات نت چنین ..

در دات نت هم امکان خواندن و نوشتن مستقیم بایتی روی RAM وجود دارد ولی دات نت از نظر امنیتی سخت گیر است، و جدای بحث موانع سیستم عامل برای دسترسی به نقاط RAM، خود دات نت هم RAM خودش را کنترل میکند تا نتوان از ریسمانهای غیر مجاز تغییرش داد.
البته امکان استفاده از API های ویندوز هم که وجود دارد، مثل API معروف rtlmovememory