نمایش نتایج 1 تا 16 از 16

نام تاپیک: می خواهم توابع پیشرفته تری درست کنم. لطفاً راهنمایی کنید.

  1. #1

    می خواهم توابع پیشرفته تری درست کنم. لطفاً راهنمایی کنید.

    سلام

    من چند سوال در مورد ساخت تابع در VB.net دارم. (از نسخه 2005 استفاده می کنم).
    الآن فقط 2 تاشو می پرسم که زیاد طولانی نشه:

    1- چطور می تونم تابعی درست کنم، که داده های ورودی اون، بیش از 1 حالت داشته باشه؟ مثلاً یا باید سه متغیر از نوغ Integer و یا یک متغیر از نوع String به عنوان متغیر ورودی، به اون داده بشه؟ (اگه واضح نیست تا توضیح بدم)

    2- چطور می تونم متغیر ورودی یک تابع رو طوری تنظیم کنم که موقع وارد کردن اون متغیر، گزینه های مختلفی در اختیارم قرار بگیره؟ (مثل زمانی که یک متغیر Boolean رو می خوام مقدار دهی کنم و به طور خودکار (Intellisense) مقادیر Trueو False به عنوان گزینه های موجود جلوم ظاهر میشه)

    با تشکر

  2. #2
    کاربر دائمی آواتار h_sadeghynejad
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Ariayee Land
    پست
    190
    خسته نباشید
    1) واسه این کار باید چند تابع هم نام اما با آرگومانهای مختلف یا آرگومان های هم نام اما با نوع های مختلف تعریف کنی در این صورت خود برنامه با توجه به ورودی ها تابع صحیح رو اجرا میکنه
    2) واسه اینکار در صورتی که کارت فقط با Boolean حل میشه که وقتی آرگومان رو از نوع Boolean تعریف کنی خود به خود همینطوری جواب میده اما اگه بخوای که طوری بشه که واسه داده های دیگه مثلا برای روزهای هفته کار بکنه اول باید یه نوع Enum تعریف کنی که اعضای اون باید انواع داده ها باشن بعد آرگومان تابع رو از اون نوع تعریف کنی به این شکل
    Enum Day
    Sat = 1
    San = 2
    Mon = 3
    Thu = 4
    Wen = 5
    Thur = 6
    Fri = 7
    End Enum

    Private Function a(ByVal b As Day)
    a = b
    End Function

  3. #3
    صادقی نژاد عزیز دستت درد نکنه.
    چقدر روشن و خوب توضیح دادید. امتحان کردم جواب داد. حالا یه سوال دیگه:

    همونطور که می دونید اگه یک تابع به نام فرضی A رو تعریف کنم، هنگامی که دارم اون رو فراخوانی می کنم، به صورت خودکار پارامترهایی که باید بهش بدم جلوم ظاهر میشه. اگه بخوام در مورد هر کدوم از این پارامترها (یا در مورد خود تابع)، یک توضیح کوتاه هم ظاهر بشه چکار باید بکنم؟

  4. #4
    کاربر دائمی آواتار eyes_shut_number1
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    http://blueco.ir
    سن
    38
    پست
    1,090
    سلام من که ندیدم بشه این چیزی که شما میگید وقتی اسم تابع رو مینویسی داخل یک تولتیپ(Tooltip) ارگمانهای ورودی اون و نوع خروجی رو که تابع برمیگردونرو میگه اگر هم از اورلود استفاده کرده باشید کنار تولتیپ فلش میزاره که بدونید آرگمان های دو تابع هم نام که دارید چیه
    OverLoad
    :تابع های هم نام با آرگمان های مختلف

  5. #5
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111

    Smile

    دوست عزیز از این تگ ها استفاده کن

    ''' <summary>
    '''
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub


  6. #6
    کاربر دائمی آواتار h_sadeghynejad
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Ariayee Land
    پست
    190
    اول یه نگاهی به لینک پائین بنداز همه چیز دستگیرت میشه
    http://www.codeproject.com/useritems/StringEnum.asp
    متاسفانه الان کلاس دارم اگه مشکلی بود بگو برگشتم در خدمتم

  7. #7
    کاربر دائمی آواتار CodeMasterX
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Iran, Shiraz
    سن
    36
    پست
    960
    دوست عزیز javad2000 پیشنهاد میکنم قبل از شروع کار با یک ابزار برنامه نویسی و تولید نرم افزار خوب اون ابزار رو یاد بگیرید.ببینید منظورم اینه:

    شما فرض کنید یه ListBox دارید و 4 تا آیتم بهش اضافه کردین.حالا میخواین یه آیتم جدید بهش اضافه کنید ولی اندیسش 2 باشه یعنی به عنوان آیتم دوم نمایش داده بشه.حالا چیکار میکنی ؟ میشه لیست رو پاک کرد و لیست جدید رو با آیتم های جدید پر کرد و یا روش های جایگزینی دیگه.ولی میشه آیتم جدید رو اضافه کرد و خاصیت اندیسش رو به 2 ست کرد.این یعنی اینکه اگه شما ابزاری که در دست دارین رو خوب و کامل بلد باشین و با قابلیت ها و امکاناتش آشنایی داشته باشین از کدنویسی اضافی و شخصی و به عبارتی دوباره کاری خلاص میشین.

  8. #8
    سلام
    ضمن تشکر
    نمیدونم من منظور شما رو درست متوجه نشدم یا شما منظور منو. اما توی پست های بالا، راه حل مورد نظرم رو نیافتم. جناب کدمستر هم که گفتند باید اول کار با ابزارها رو خوب یاد بگیری، نمی دونم منظورشون کدوم ابزار هست.

    من میخوام تابع هایی که میسازم Tooltip هایی شبیه تصاویر زیر داشته باشه (اگه عکس ها لود نشدند، روی اونها راست کلیک کنید و Open in New Window را بزنید) :




    برای این که اگر اون تابع رو داخل یه ماژول کردم و در اختیار دیگران گذاشتم و خواستند اون رو فراخوانی کنند بدونند هر پارامتر تابع چی هست و کلاً اون تابع به چه درد می خوره.

  9. #9
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111
    دوست عزیز من که گفتم چکار کنید توضیحات در مورد متد یا خصوصیت را در بین تگ <summary> قرار بدید و در مورد هر پارامتر هم پس از معرفی پارامتر توضیحات را داخل تک قرار دهید مانند مثال زیر

    ''' <summary>
    ''' تابع لود فرم
    ''' </summary>
    ''' <param name="sender">این پارمتر حاوی اشاره گری به فرم است</param>
    ''' <param name="e">این پارامتر حاوی بقیه اطلاعات رویداد است </param>
    ''' <remarks>رویداد لود</remarks>
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

  10. #10
    کاربر دائمی
    تاریخ عضویت
    آذر 1385
    محل زندگی
    Tehran
    پست
    109
    نقل قول نوشته شده توسط javad2000 مشاهده تاپیک
    سلام
    1- چطور می تونم تابعی درست کنم، که داده های ورودی اون، بیش از 1 حالت داشته باشه؟ مثلاً یا باید سه متغیر از نوغ Integer و یا یک متغیر از نوع String به عنوان متغیر ورودی، به اون داده بشه؟ (اگه واضح نیست تا توضیح بدم)
    با تشکر
    برای تحقیق در مورد این مبحث از کلمات کلیدی Polymorphism , Object Oriented استفاده کنید. البته سوال شما به صورت مستقیم توسط دوستان پاسخ داده شده است.

  11. #11
    غفوری جان
    حالا افتاد. امتحان کردم 100% جواب میداد. دستت درد نکنه.
    حالا یه سوال دیگه:

    1- چطور میشه کاری کرد که مقدار دریافتی یا مقدار بازگشتی یک تابع، به صورت یک آرایه باشد؟ چیزی شبیه این کد (که البته کار نمی کنه) :


    Function B() (A() as Integer) as Integer
    B(1)=A(1)+1
    B(2)=A(2)+2
    End Function

  12. #12
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111
    b که اسم خود تابع است نمی شود به ان مقدار داد کد بالا را می توانی بشکل زیر بنویسی


    Dim a() As Integer = {1, 2, 3}
    Function sum(ByVal b() As Integer) As Integer()
    Dim d(), c As Integer
    d = New Integer(b.Length) {}
    For c = 0 To b.Length - 1
    d(c) = b(c) + 1
    Next
    Return d
    End Function


  13. #13
    کاربر دائمی آواتار eyes_shut_number1
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    http://blueco.ir
    سن
    38
    پست
    1,090
    جواد جان به این نکته پیشه پا افتاده توجه بکن که حجم کد هاتو کو میکنه .اگه شما بخواین یک پارامتر آرایه ای رو برای تابع بفرستید لازم نیست که مقدار برگشتی داشته باشه.چون آرایه ها آشاره گر دارن منظور همون ByRefrence هستش. پس تغییرات توی خودشون ذخیره میشه به مثال پایین توجه کن. در اینجا به جای تابع از رویه استفاده شده ولی وقتی به لود فرم برمیگرده به تمامی آرایه مقدار 2 اضافه شده
    Sub Load_Form1 (...)
    Dim D() As Integer= Nothing
    FUNC(d)

    End Sub
    _________________________________________
    Public Sub FUNC(ByVal d() A Integre)
    For i As integer= o to d.longlength -1
    d(i) + = 2
    End Sub

  14. #14
    که اسم خود تابع است نمی شود به ان مقدار داد کد بالا را می توانی بشکل زیر بنویسی
    کد:
    Dim a() As Integer = {1, 2, 3} Function sum(ByVal b() As Integer) As Integer() Dim d(), c As Integer d = New Integer(b.Length) {} For c = 0 To b.Length - 1 d(c) = b(c) + 1 Next Return d End Function

    سلام
    امتحان کردم جواب داد. متشکرم.

    جواد جان به این نکته پیشه پا افتاده توجه بکن که حجم کد هاتو کو میکنه .اگه شما بخواین یک پارامتر آرایه ای رو برای تابع بفرستید لازم نیست که مقدار برگشتی داشته باشه.چون آرایه ها آشاره گر دارن منظور همون ByRefrence هستش. پس تغییرات توی خودشون ذخیره میشه به مثال پایین توجه کن. در اینجا به جای تابع از رویه استفاده شده ولی وقتی به لود فرم برمیگرده به تمامی آرایه مقدار 2 اضافه شده
    کد:
    Sub Load_Form1 (...)Dim D() As Integer= NothingFUNC(d)End Sub_________________________________________Public Sub FUNC(ByVal d() A Integre)For i As integer= o to d.longlength -1 d(i) + = 2End Sub
    اگر درست متوجه شده باشم منظور شما فرستادن یک متغیر به صورت Byref به تابع یا روال است. البته این کار هم امکان پذیر است، اما به نظرم استفاده از یک تابع آرایه ای، خوانا تر از فرستادن آرایه به صورت Byref خواهد بود.

    با سپاس

  15. #15
    کاربر دائمی آواتار eyes_shut_number1
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    http://blueco.ir
    سن
    38
    پست
    1,090

    Thumbs up

    بله درسته ولی با ریفرنس خوبیهای زیادی داره
    و اگر توابع و متغییر هات رو دقیق نام گذاری کنی نه تنها به مشکلی بر نمیخوری
    بلکه حجم کد ها کمتر و خوانایی برنامت بیشتر میشه
    صلاح کار خود خسروان دانند

  16. #16
    کاربر دائمی آواتار eyes_shut_number1
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    http://blueco.ir
    سن
    38
    پست
    1,090
    در ضمن جواد جان میدونم که میدونی
    ولی منم یه بار دیگه میگم که :
    از آرایه به عنوان آرگمان فقط با BYVAL فقط در آخرین آرگمان و فقط یک دونه
    یعنی شما نمیتونید بیشتر از 1 آرایه آرگمان داشته باشید
    پس به نظر میاد Byref بهتره

تاپیک های مشابه

  1. تقاضایی راهنمایی و کمک در کار با Dreamweaver
    نوشته شده توسط احمد کاوه در بخش طراحی وب (Web Design)
    پاسخ: 4
    آخرین پست: پنج شنبه 29 مهر 1389, 12:41 عصر
  2. آقا چه چیزایی با javascript قابل حل هست چه چیزایی با .net
    نوشته شده توسط odiseh در بخش ASP.NET Web Forms
    پاسخ: 13
    آخرین پست: جمعه 02 فروردین 1387, 04:44 صبح
  3. دوستانی که با interbase آشنایی دارند لطفا راهنمایی کنند
    نوشته شده توسط mehdi_moosavi در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 4
    آخرین پست: شنبه 01 بهمن 1384, 14:11 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •