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

نام تاپیک: چگونگی تعریف لیست جهت مقایسه در شرط if

  1. #1

    چگونگی تعریف لیست جهت مقایسه در شرط if

    با سلام خدمت دوستان گرامی

    چگونه می شود دو داده را در یک شرط If آورد و مقایسه کرد بدون این که از عملگرهای And و Or استفاده کرد؟

    توضیح ::نوشتن:: :
    فرض کنید در یک جعبه متن باید دو داده وارد شود مثلا 1 و 2. حال می خواهیم توسط شرط If بگوییم که اگه غیر از این دو عدد وارد شود خطا رخ داده است، چه باید انجام شود؟ می گوییم اگر متن مخالف 1 بود یا متن مخالف 2 آنگاه خطا رخ داده است. تا این‌جا فکر نمی کنم کار سختی باشد. ولی اگر قرار باشد مثلا 7 عدد وارد شود آنگاه این شرط خیلی بزرگ و ناخوانا خواهد شد. حال در این‌گونه موارد چه باید انجام داد؟

    فکر می کنم در دلفی با قرار دادن علائم { } یا [ ] می شود این کار را انجام داد. آیا در وی بی هم این امکان یا شبیه این وجود دارد یا خیر؟

    با احترام- خدانگهدار

  2. #2
            Select Case CInt(TextBox1.Text)
    Case 1 To 10
    MsgBox("Accepted")
    Case 13, 17, 24, 25
    MsgBox("Accepted")
    Case Is < 0
    MsgBox("Unacceptable")
    Case Is > 25
    MsgBox("Unthinkable")
    End Select

  3. #3

    درسته

    سلام خدمت دوست گرامی

    ایول :oops: ایول :oops:

    منظور من دقیقا به وسیله دستور If است و الا خودم از وجود دستور Select مطلعم، با این وجود از زحمتی که کشیده‌اید و جواب داده‌اید متشکرم.

    من با خودم گفتم شاید در دات نت این چنین دستوراتی پشتیبانی شده باشد، اگر کسی می داند جواب دهد.

    با احترام- خدانگهدار

  4. #4
    هه هه، خوب معذرت میخوام، من که نمیدونم شما چقدر بلدین ... :embr:

    بعضی وقتها آدم یه سوالایی می‌بینه ...

    یه دستور دیگه هم توی دات نت هست (البته تو VB6 هم بود) ولی فقط برای شرطهای کوتاهه و نسبت به عبارت اول یکی از آبجکت‌ها رو برمیگردونه ... یعنی در واقع یه جور فانکشن محسوب میشه


    IIf(Experssion, Truepart, Falsepart)


    حالا اگر از این هم مطلع بودید من رو به باد تمسخر نگیرید، من یه کم فکر میکنم همه چیز رو فقط خودم میدونم. از شوخی گذشته اون مطلبی که مطرح کردین چی هست و مزیتش چیه ؟ اصلا چطور ممکنه یه گذاره شرطی چند تا شرط رو بدون And و or بررسی کنه ؟

  5. #5
    با سلام خدمت دوست گرامی

    قصد من مسخره کردن نبودن. به هر حال ببخشید اگه چنین چیزی از نوشته‌هایم برداشت می شود. :oops:

    این کد دلفی رو نگاه کنید

    i := 1;
    str := (Sender as TEdit).Text;
    while i <= Length(Str) do
    begin
    if not (Str[i] in ['0','1','2','3','4','5','6','7','8','9']& #41; then
    Delete(Str, i, 1)
    else
    i := i + 1;
    end;
    (Sender as TEdit).Text := str;

    امیدوارم منظورم رو گرفته باشد

  6. #6
    متاسفانه فعلا نمی‌تونم با اکانت خودم وارد سایت بشم.
    گفتم که شوخی کردم ... می‌دونم قصدتون تمسخر نبود (من پر روتر از این حرفها هستم که به این راحتی‌ها بهم بر بخوره!)

    من البته تا حالا طرف دلفی نرفتم، ولی تو VB.NET می‌تونید با استفاده از Array.IndexOf ببینید که شیی مورد نظرتون توی آرایه هست یا نه. کدی که بالا نوشتید تفریبا اینطوری می‌شه :




    Dim Source As String = TextBox1.Text
    Dim AcceptableChars() As Char = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
    Dim i As Int32

    While i < Source.Length - 1
    If Array.IndexOf(AcceptableChars, Source.Chars(i)) = -1 Then
    Source = Source.Remove(i, 1)
    Else
    i += 1
    End If
    End While

    TextBox1.Text = Source



    ولی شیی Char یه عالمه متد دیگه داره که این جور کارها رو راحت میکنه.




    Dim Source As String = TextBox1.Text

    For Each c As Char In Source.ToCharArray
    If Not Char.IsDigit(c) Then
    Source = Source.Remove(Source.IndexOf(c), 1)
    End If
    Next
    TextBox1.Text = Source



    در ضمن برای دستکاری String ها هیچ کلاسی قدرتمندتر از Reqular Expression نیست :



    Dim Source As String = TextBox1.Text
    TextBox1.Text = ""

    Dim Pattern = "\d+" 'only digits
    Dim Eng As New Regex(Pattern)
    Dim MC As MatchCollection

    MC = Eng.Matches(Source)

    For Each m As Match In MC
    TextBox1.Text &= m.Value
    Next

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

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