ايران ويج

نسخه‌ی کامل: تشخیص نوشته ی فارسی در TextBox
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
چطوری میشه فهمید که نوشته ای که در TextBox تایپ شده فارسیه یا نه ؟
سلام.
از رو کد اسکی کاراکتر ها میشه فهمید.
می خوام رویدارد KeyPress زا طوری تنظیم کنم که فقط فارسی تایپ بشه .
از چه کدی باید استفاده کنم ؟
اگه امکانش هست یه مثال برام بزن . مرسی
davoodx نوشته است:می خوام رویدارد KeyPress زا طوری تنظیم کنم که فقط فارسی تایپ بشه .
از چه کدی باید استفاده کنم ؟
اگه امکانش هست یه مثال برام بزن . مرسی
کد:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii >= 97 And KeyAscii <= 122 Then SendKeys Chr(8)
End Sub
امیر جان ممنون از لطفت Heart Happy
چجوری باید بررسی کنیم که توی یه تکست باکس کلا چند کارکتر فارسی و چند تا انگلیسی زده شده ؟ یعنی بگیم چند تا یونیکد داریم و ... ؟
باید از یک حلقه استفاده کنی و از اول تا آخر تکس باکس رو چک کنی

بعد تک تک به کد اسکی تبدیل و مقایسه می کنی

کد:
Dim i, Fa, En As Integer
Dim CGet As String
For i = 1 To Len(Text1.Text)
CGet = Mid(Text1.Text, i, 1)
Select Case Asc(CGet)
'Case Farsi Asci
Fa = Fa + 1
'Case English Asci
En = En + 1
End Select
Next
MsgBox "In This Text There Are " + Str(Fa) + " Farsi Character And " + Str(En) + " English Character"

این یه الگوریتم ساده برای این کاره
در حقیقت اونی که دوستمون yeketaz نوشته، ناقصه!

کاملش اینه که به شما تعداد کاراکتر های فارسی،تعداد کاراکتر های انگلیسی، تعداد اعداد و همچنین تعداد کاراکتر های خاص رو می ده
کاراکتر های خاص اینان: !@#$%^&*)(_+=-}{|[]\/?.,<>';:"~`

کد:
Dim i, Fa, En, No, Ch As Integer
Dim CGet As String

For i = 1 To Len(Text1.Text)
    CGet = Mid(LCase(Text1.Text), i, 1)
    
    If Asc(CGet) >= 97 And Asc(CGet) <= 122 Then
        En = En + 1
    ElseIf Asc(CGet) >= 48 And Asc(CGet) <= 57 Then
        No = No + 1
    ElseIf Asc(CGet) >= 33 And Asc(CGet) <= 46 Then
        Ch = Ch + 1
    ElseIf Asc(CGet) >= 58 And Asc(CGet) <= 64 Then
        Ch = Ch + 1
    ElseIf Asc(CGet) >= 91 And Asc(CGet) <= 96 Then
        Ch = Ch + 1
    ElseIf Asc(CGet) >= 123 And Asc(CGet) <= 126 Then
        Ch = Ch + 1
    Else
        Fa = Fa + 1
    End If
Next

MsgBox "In This Text There Are " + Str(Fa) + " Farsi Character And " + Str(En) + " English Character And " + Str(No) + " Number And " + Str(Ch) + " Special Character"
توجه نکردی چی شد

من گفتم این یک الگوریتم برای این کاره

تازه اون چیزی که من گفتم خوانا تره چون از Select Case استفاده کردم

و همه می دونند که استفاده زیاد از دستور IF تودرتو از خوانایی برنامه می کاهد
البته اگه دقت کنی می بینی که من از IF تو در تو استفاده نکردم، این تو در تو نیست دوست عزیزمWink
هدفم زیر سوال بردن برنامت نبود فقط می خواستم اون دوستمون که سوال رو پرسیده یه برنامه کامل گیرش بیاد.
far_222000 نوشته است:کاملش اینه که به شما تعداد کاراکتر های فارسی،تعداد کاراکتر های انگلیسی، تعداد اعداد و همچنین تعداد کاراکتر های خاص رو می ده
کاراکتر های خاص اینان: !@#$%^&*)(_+=-}{|[]\/?.,<>';:"~`

کد:
ElseIf Asc(CGet) >= 33 And Asc(CGet) <= 46 Then
        Ch = Ch + 1
    ElseIf Asc(CGet) >= 41 And Asc(CGet) <= 46 Then
        Ch = Ch + 1


ممنون دوست عزیز
میشه در مورد یونیکد هم توضیح بدین که به چه رنج کارکترهایی اطلاق میشه ؟
و دیگه این که این دو خط که بالا کوت کردم توی کد اشتباه داده شده ؟
ممنون
صفحه‌ها: 1 2