PDA

View Full Version : معادل بعضي از كلمات كليدي .NET در Delphi



ali_mohamadi8928
چهارشنبه 15 خرداد 1387, 23:57 عصر
سلام بچه ها . من چند معادل چند تا كلمه ي كليدي در دات نت رو ميخواستم :متفکر:

مثلا اين قسمت رو وقتي در VB.NET تعيرف ميكنيم معادل اون در دلفي چي هست و چي ميتونيم به جاي اون توي دلفي استفاده كنيم :متفکر:


Public Enum ENMType
ENT1 = 0
ENT2 = 2
ENT3 = 1
ENT4 = 64
ENT5 = 65
End Enum

يا مثلا تابع زير رو نگاه كنيد



Shared Function GetBT(ByRef EMode As String) As Byte


خوب اينجا Shared يعني چي ؟؟ ByRef يا بعضي موقع ها ByVal نوشته ميشه يعني چي ؟؟ بعضي اوقا به جاي Shared كلمه ي MustOverride رو مينويسن . اينها معادلشون رو در دلفي چي ميتونيم استفاده كنيم ؟



Public MustOverride Sub GetOf(ByVal ffd As String)

ali_mohamadi8928
چهارشنبه 15 خرداد 1387, 23:59 عصر
ببخشيد يه چيز ديگه هم هست ... مثلا عبارت زير چرا به كار ميره و معادلش چيه توي دلفي ؟؟؟



#Region "'Test Region"


#End Region



اونوقت يك سري توابع رو بين اين مينويسن .. ميشه بگيد توي دلفي چه معادلي داره اين كار ؟؟؟

vcldeveloper
پنج شنبه 16 خرداد 1387, 03:46 صبح
من با Delphi.net و کلا دات نت کار (بخصوص VB.Net) نمیکنم، پس جوابی که میدم، ممکنه معادل های بهتری براش وجود داشته باشه...


ENMType = (Ent1, Ent2, Ent3, Ent4, Ent5);

مطمئن نیستم که Delphi.Net به شما اجازه دادن مقدار به مقادیر Enum را میده یا نه.


Shared Function
احتمالا منظورش Static Function باشه. اگر در Delphi.net واژه Static وجود نداشت، می تونید از class function استفاده کنید.


ByRef يا بعضي موقع ها ByVal نوشته ميشه يعني چي ؟؟
ByRef یعنی بجای مقدار پارامتر، اشاره گری از آن به تابع ارسال میشه و هر تغییری روی آن اعمال کنید، روی متغیری که به تابع به عنوان پارامتر ارسال کردید، منعکس میشه. در دلفی بجای آن از کلمه کلیدی var قبل از نام پارامتر استفاده میشه. ByVal یعنی یک نسخه از مقدار متغیر برای تابع به عنوان پارامتر ارسال میشه، پس هر تغییری که بر روی آن در داخل تابع صورت بگیره، تاثیری بر روی متغیر اولیه که به عنوان پارامتر به تابع پاس شده، نداره. در دلفی بطور پیش فرض اکثر نوع های داده به این شکل ارسال میشند، پس نیازی ندارید برای آن قبل از نام پارامتر کلمه کلیدی خاصی استفاده کنید.


MustOverride
احتمالا منظورش اینه که تابع Abstract هست و باید توسط کلاس های فرزند پیاده سازی بشه. در دلفی برای آن از دو کلمه کلیدی virtual و Abstract بطور همزمان استفاده میشه تا این منظور را برسونه:

procedure Foo; virtual; abstract;


اونوقت يك سري توابع رو بين اين مينويسن .. ميشه بگيد توي دلفي چه معادلي داره اين كار ؟؟؟
کار خاصی انجام نمیده، فقط در داخل IDE هر جا که کدی در داخل این عبارت وجود داشته باشه، بصورت "..." نمایش داده میشه. برنامه نویس میتونه اگر مایل بود، با کلیک بر روی ... کد را مشاهده کنه. کاربردش مخفی کردن بعضی کدهای دست و پا گیر از جلوی چشم برنامه نویس هست. در دلفی هم احتمالا با همین کلمه کلیدی Region استفاده میشه، مطمئن نیستم.

مهران موسوی
پنج شنبه 16 خرداد 1387, 04:02 صبح
ٍEnum ها در دات نت به معني شمارنده هستن و به قول بچه ها گفتني فقط ميتونن يك سري مقاديري رو قبول كنن كه ما از قبل براشون تعريف كرديم ... خيلي جاها مفيد واقع ميشن و معادلش در دلفي به صورت زير هست و اقا علي هم بهش اشاره كردن ...


type
ENum = (Ent1, Ent2, Ent3, Ent4, Ent5);

ولي چيزي كه برام مبهم هست چرا اين مقادير مشخص شده رو مقدار گذاري كردين ... ؟؟ اين من رو گمراه كرده ... !!! من خودم هم وقتي با C# كار ميكنم به صورت عادي تعريف ميكنم و مقداري براش نميزارم ... اين چرا مقدار گذاري شده من نميدونم .... !!

مهران موسوی
پنج شنبه 16 خرداد 1387, 04:18 صبح
كلمه ي كليدي MustOverride هم همون چيزي هست كه اقا علي گفتن و اگه به جاي اون از NotOverridable استفاده بشه به كلاسهايي كه از كلاس پايه مشتق ميشن اجازه ي بازنويسي تابع داده نخواهد شد ...

كلمه ي كليدي Shared باعث ميشه تا تمامه نمونه هاي يك كلاس بتونن از اون تابع يا خواص به اشتراك گذاشته شده استفاده كنن ... همون نوع ايستاي خودمون هست كه علي جان درست گفت ...

كلمه ي ByRef رو هم كه اقا علي كامل توضح داد و نيازي نميبينم توضيح اظافي بدم ...

يا حق ...

مهران موسوی
پنج شنبه 16 خرداد 1387, 04:40 صبح
يه چيزي فهميدم .. enum ها در دات نت مثل همون داده هاي دلخواه اي هستن كه ما ميتونيم به دلخواه اونا رو تعريف كنيم ... مثل مثلا روزهاي هفته كه در دلفي به صورت زير تعريف ميشن كه در بالا هم توضيح داده شد ...


type
ENum = (Ent1, Ent2, Ent3, Ent4, Ent5);فقط تنها تفاوت جالبش در دات نت با دلفي در اين هست كه علاوه بر اينكه ما ميتونيم در اونها مقادير خاصي رو مشخص كنيم كه فقط اون رو قبول كنن ميتونيم براي هر مقداري كه تعريف ميكنيم يك مقدار هم به صروت عدد صحيح ( Integer ) تعريف كنيم تا در مواقع خواص بتونيم ازش استفاده كنيد .

توي دلفي همچين چيزي تعريف نشده ولي ميشه مشابه همين رو يه جورايي شبيه سازي كرد ...

در دات نت با كد


[Enum].GetValues(

ميتونيد مقادير تعريف شده كه به صورت اعداد صحيح ميباشند رو به صورت ارايه دريافت كنيد ...

ali_mohamadi8928
شنبه 18 خرداد 1387, 02:55 صبح
اقا مهران و اقاي علي كشورز از زحماتتون خيلي ممنون

خيلي خوبه كه افرادي با سطح اگاهي شما وجود دارن و ما رو ياري ميكنن .




احتمالا منظورش Static Function باشه. اگر در Delphi.net واژه Static وجود نداشت، می تونید از class function استفاده کنید.


اقاي كشاورز من منظورم Delphi.NET نيست بلكه همون دلفي معمولي هست . خوب داخل همون دلفي معمولي هم class function داريم ؟ چه جوري بايد تعريف بشه و ازش استفاده بشه ؟

vcldeveloper
چهارشنبه 22 خرداد 1387, 17:17 عصر
خوب داخل همون دلفي معمولي هم class function داريم ؟ بله


چه جوري بايد تعريف بشه و ازش استفاده بشه ؟قبل از عبارت function یا procedure در تعریف متد، کلمه class را هم اضافه می کنید، مثلا:

class function Foo;منظور از آن هم این هست که این متد مربوط به نمونه هایی (Objectهایی) که از یک کلاس ساخته میشند نمیشه و مربوط به خود کلاس هست. به عبارت دیگه، این متد برای اجرا نیازی نداره که یک نمونه از کلاس ساخته شده باشه، اما از طرفی به فیلدهای کلاس هم دسترسی نخواهد داشت، چون این فیلدها توسط نمونه ایی که از کلاس ساخته میشند مقداردهی و نگهداری میشند. می تونید توی Help دلفی درباره اش مطالعه کنید.

B-Vedadian
چهارشنبه 22 خرداد 1387, 17:53 عصر
يک نکته کوچولو، تو دلفي هم ميتونيد انواع enumerated با مقادير از پيش تعيين شده داشته باشيد:


type Size = (Small = 5, Medium = 10, Large = Small + Medium);

vcldeveloper
پنج شنبه 23 خرداد 1387, 02:07 صبح
يک نکته کوچولو، تو دلفي هم ميتونيد انواع enumerated با مقادير از پيش تعيين شده داشته باشيد
جزو ویژگی های دلفی دات نت هست یا در دلفی Win32 هم وجود داره؟ اگر در دلفی Win32 هم وجود داره، از کدام ورژن این امکان اضافه شده؟

B-Vedadian
پنج شنبه 23 خرداد 1387, 07:57 صبح
سلام و خسته نباشید جناب کشاورز،

جزو خواص دلفی win32 هم هست، من که تو ورژن 7 دلفی دیدم ولی قبلش رو چک نکردم.