آخرین اخبار :

ارسال پاسخ 
 
  • 0 راي - 0 ميانگين
  • 1
  • 2
  • 3
  • 4
  • 5
رتبه موضوع
فارسی‌نویسی صحیح در برنامه‌ها
نويسندهپيغام
Darg غايب
مدير بازنشسته
*****

ارسال‌ها: 1,080
ثبت نام: تير ۱۳۸۴

تشکرها : 373
( 614 تشکر در 200 ارسال )
شماره : #1
فارسی‌نویسی صحیح در برنامه‌ها
فارسی‌نویسی درست

این برنامه که به شکل یک کتابخانه درش آورم توابعی داره که به شما کمک می کنه برای تصحیح ایرادات زبان فارسی در برنامه هاتون.

لینک برنامه روی خود سایت
http://www.iranvig.com/4547.html

اول از همه بگم که تمام کد های این برنامه از خودمه و یه نوبت چگونگی عملکرد این توابع رو براتون توضیح می دم.

در کل این برنامه کار های زیر رو انجام میده:
-تمام یاء های نقطه دار یعنی "ي" ها تبدیل می شند به شکل فارسی خودشون یعنی "ی"
-به طور کلی در کلمات جمع "ها" جمع در تایپ صحیح خودش نباید از کلمه قبلیش با یک فاصله جدا باشه. که این برنامه این اصلاح رو انجام می ده.
مثلا این غلطه "جمع ها" اما درستش می شه "جمع‌ها"
-در مورد پیشوند و پسوند هایی مثل "یی,های, می, نمی" هم دو مورد بالا اجرا خواهد شد. یعنی شما رشته خودتون رو به برنامه می دید و برنامه حروف به شکل برگردان صحیح فارسیش به شما تحویل می ده.

درن برنامه ای که دانلود خواهید کرد یک برنامه تست هم هست که درش به خوبی این مسئله نشون داده شده. دو تا فرم رو با هم مقایسه کنید که چه اتفاقی برای نوشته های فارسی شون بعد از اعمال توابع برنامه من افتاده.
توجه کنید که برنامه هایی که به این شکل تصفیه اصطلاح درشون اتفاق بیافته بسیار زیبا تر, شکیل تر و حرفه ای تر هستند.
من خودم دارم دیگه تو تمام پروژه هایی که آوردن زبان فارسی رو احتیاج داره به طور کامل از این کد استفاده می کنم.
اما درون اون کتابخانه چند تا تابع هست که خیلی جالبند در زیر عملکرد هر کدوم رو توضیح دادم:

کد:
Public Function StringCorrectPersian(ByVal StrIn As String) As String
شما رشته فارسی رو وارد این تابع کنید خروجی اون تصحیح شده اون رشته خواهد بود.
توجه کنید در بعضی از انواع پایگاه های داده دوستان دچار مشکل می شند با ذخیره و بازیافت "ي" های نقطه دار که این تابع کمک بزرگی برای اون ها خواهد بود.

کد:
Public Sub SCPO(ObjIn)
شما یک شیئ مثل CommandButton یا Label و یا هر چیزی که لازم هست کلیه متون فارسی اعم از Caption یا Tag یا ToolTipText درون اون شیئ به شکل صحیح خودش درباید, رو وارد این زیر برنامه کنید تا براتون کار رو اتوماتیک انجام بده.

کد:
Public Sub SCPF(FormIn)
و اما تابع جالب دیگه ما همین تابع SCPF است. شما فقط کافیه اسم فرمی که می خواید خود فرم, منو های فرم و تمام اشیای موجود در فرم به شکل صحیح فارسی تبدیل بشند, رو وارد این زیر برنامه کنید این زیر برنامه همه کار ها رو خودش انجام میده.

حالا چطور این برنامه میتونه حروف اشتباه رو تشخیص بده و یا اینکه چطور می تونه حروف صحیح رو جایگزین کند رو براتون توضیح خواهم داد.


فیلم آموزشی Active کردن ویندوز XP فقط 2.7 مگ با کیفیت عالی
Theme جدید ویندوز XP فیروزه ای با 5 رنگ
مقاله اسرار رجیستری PDF
بسته نرم افزاری SidebarJS مخصوص ویندوز XP و فارسی زباتان

(آخرين ويرايش ارسال در: ۱۴-آبان-۱۳۸۶ ۲۱:۵۶:۳۴ توسط Darg.)
۲۹-مرداد-۱۳۸۶ ۱۹:۳۸:۵۹
مشاهده وب سايت اين کاربر يافتن تمام ارسال‌هاي اين کاربر نقل اين ارسال در يك پاسخ
تشکر شده توسط : arnh
Di Di آفلاين
مدير بخش هك و كرك
*****

ارسال‌ها: 1,751
ثبت نام: اسفند ۱۳۸۵

تشکرها : 984
( 1671 تشکر در 624 ارسال )
شماره : #2
RE: برنامه فارسی نویسی صحیح در برنامه ها
دست شما درد نکنه به نظر برنامه جالب و مفیدی میاد. من قبلا به طور دستی همون ابتدای وارد کردن اطلاعات فارسی، اونها رو به طور درست وارد می کردم ولی بعدا به این نتیجه رسیدم که به زحمتش نمی ارزه!!! ولی با این برنامه می شه دوباره اون کار رو از سر گرفت.
الگوریتمش باید به این صورت باشه که داخل متن به دنبال "ی" نقطه دار می گرده و اون رو با کاراکتر صحیح جایگزین می کنه همینطور دنبال "می" و " ها " و ... هم می گرده و اسیس قبل یا بعد اونها رو ( که اضافه هست ) با کاراکتر فاصله جایگزین می کنه.
به نظر ساده میاد ولی احتمال بروز خطا داخل کد برنامه تبدیل شده وجود داره. اگه می شه یه توضیحی در مورد جلوگیری از بروز خطا بدید.


آغازی برای کرک
کرک قفل تلفنی
کارگاه آموزش کرک
دانلود ابزارهای کرک
استفاده از IDA‌ براي آنپك كردن يك برنامه "حرف نشنو"!
سورس ويروس، كرم ،‌تروجان
۳۰-مرداد-۱۳۸۶ ۰۸:۴۰:۱۵
يافتن تمام ارسال‌هاي اين کاربر نقل اين ارسال در يك پاسخ
Darg غايب
مدير بازنشسته
*****

ارسال‌ها: 1,080
ثبت نام: تير ۱۳۸۴

تشکرها : 373
( 614 تشکر در 200 ارسال )
شماره : #3
RE: برنامه فارسی نویسی صحیح در برنامه ها
امروز (جمعه) بالاخره وقت کردم توضیحات تکمیلی رو قرار بدم
حالا لازم می‌دونم در ابتدا چند نکته مهم و کاربردی رو برای دوستان بگم بعد برم سراغ خود برنامه.


•ما در اینجا صحبتمون روی استاندارد یونی کد هست برای نگارش فارسی

•هر حرف در سیستم یونی کد دارای یک کد خاص به خودش هست نمونه‌های زیر رو ببینید:
ی=1609
ي=1610
بنابراین با توجه به اینکه کد‌های دو حرف "ی" و "ي" از هم مجزا هستند می‌شه از کد یونی اون‌ها برای استفاده و اصلاح در رشته استفاده کرد و نه خودشون.

•برای تبدیل هر عدد یونی کد به حرف معادل خودش در زبان وی بی 6 از عملگر:

کد:
Function ChrW(CharCode As Long(

استفاده می‌شه مثلا (ChrW(1609 معنی همون حرف "ی" یاء بدون نقطه رو می ده.

•در سیستم کد دهی بونی کد کارکتر خاصی وجود داره به اسم NonJoiner با مشخصات:

کد:
    AscW = 8204         ,Hex = 200C

وظیفه این کاراکتر اینه که, اگر بین دو حرف فارسی اومد اون دو حرف رو بدون قید و شرط از هم جدا کنه.
مثلا کلمه "جواد" رو در نظر بگیرید. اگر من حرف (ChrW(8204 بین حرف "ج" و "و" در کلمه جواد بیارم به شکل "ج‌واد" در میاد. خوب می‌بینید با وجود اینکه حرف "ج" و حرف "و" درست بعد از هم اومدند اما به دلیل وجود عملگر NonJoiner که به معنی "بدون اتصال" هست, اون دو حرف به هم نچسبیندند. اینجا من NonJoiner رو عملگر خطاب کردم چون حروفی از این دست در جدول کد‌های یونی بیشتر به یک علگر شبیه هستند تا یک حرف قابل نمایش.

مسئله بعدی اینکه اسم کامل این عملگر در جدول کد‌های یونی ZERO WIDTH NON-JOINER هست که می‌تونید اون رو در برنامه‌ای که قبلا دانلود کردید در ماژول mMain از پروژه FunctionsGJS و با اسم ChNonJoiner مشاهده کنید.

•اما کارکتر خاصی دیگری وجود داره به اسم Joiner با مشخصات:

کد:
    AscW = 8205        ,Hex = 200D

این کاراکتر هم یک عملگره و دقیقا برعکس کاراکتر قبلی عمل می‌کنه. یعنی اگر بین دو حرف فارسی بیاد اون دو حرف به هم می‌چسبند.
اسم کامل این عملگر در جدول کد‌های یونی ZERO WIDTH JOINER هست که می‌تونید اون رو در ماژول mMain با اسم ChJoiner مشاهده کنید.

•کارکتر خاصی دیگری وجود داره به اسم کامل LEFT-TO-RIGHT MARK با مشخصات:

کد:
    AscW = 8206          ,Hex = 200E

این کاراکتر هم یک عملگر هست و وظیفش اینه که اگر در ابتدای یک رشته اومد نوع نمایش اون رشته رو تبدیل کنه به استاندارد چیدمان چپ به راست. در برنامه من با اسم CHL2RN مشخص شده اما این کاراکتر برای ما مهم نیست چون ما در فارسی راست به چپ داریم که مورد بعدی توضیح دادم و خیلی مهمه.

•کارکتر خاصی دیگری وجود داره به اسم کامل RIGHT-TO-LEFT MARK با مشخصات:

کد:
    AscW = 8207          ,Hex = 200F

این کاراکتر هم یک عملگر هست و وظیفش اینه که اگر در ابتدای یک رشته اومد نوع نمایش اون رشته رو تبدیل کنه به استاندارد چیدمان راست به چپ یعنی برای زبان خودمان فارسی. در برنامه من با اسم CHR2LN مشخص شده و این کاراکتر اهمیت و کاربرد بالایی داره. این نکته برای خیلی از برنامه‌نویس‌های فارسی زبان مهم خواهد بود.

* برای اعمال خط الرسم فارسی (عربی) در محیط‌هایی که اجازه راست به چپ کردن رشته‌ها درش وجود نداره (مثل خصوصیت ToolTipText کنترل‌های وی بی) شما کافیه کاراکتر (ChrW(8207 رو به اون رشته اضافه کنید.

فقط برای اینکه این مورد کامل براتون جا بیافتد من مجبور شدم دوباره برنامه رو آپ لود کنم که درش همین مورد هم ذکر شده. ToolTipText


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

-برای یاء‌های نقطه دار طبق توضیحاتی که در بالا عنوان شد خیلی سادست از فرمان زیر برای جایگزین کردن "ي" ها با شکل درستشون یعنی "ی" استفاده می‌شه:

کد:
Replace(StrIn,ChrW$(1610),ChrW$(1609))


-اما در مورد پسوند "ها", برای اینکه اشتباهی رخ نده از همین خاصیت پسوند بودنش استفاده می‌شه. یعنی اونجا‌هایی که بعد از "ها" فاصله باشه و با شرط اینکه حرف ماقبل "ها" یکی از حروف مجاز (حروف معمول زبان فارسی و نه علائم و نشانه‌ها) باشد و حرف قبل از "ها" فضای خالی باشد, یک کاراکتر (ChrW(8204 یا (ChrW(NonJoiner جایگزین فضای خالی قبل از "ها" می‌شه تا برای مثلا کلمه "جمع ها" که درستش "جمع‌ها" هست, به شکل "جمعها" در نیاد.

-در مورد پسوند "های" مثل بالا عمل می‌شه اما برای پیشوند‌های "می" و "نمی" با توجه به پیشوند بودنشون برعکس بالا عمل می‌شه.


فیلم آموزشی Active کردن ویندوز XP فقط 2.7 مگ با کیفیت عالی
Theme جدید ویندوز XP فیروزه ای با 5 رنگ
مقاله اسرار رجیستری PDF
بسته نرم افزاری SidebarJS مخصوص ویندوز XP و فارسی زباتان

(آخرين ويرايش ارسال در: ۴-شهريور-۱۳۸۶ ۱۱:۱۷:۵۶ توسط Darg.)
۲-شهريور-۱۳۸۶ ۱۵:۴۰:۵۲
مشاهده وب سايت اين کاربر يافتن تمام ارسال‌هاي اين کاربر نقل اين ارسال در يك پاسخ
تشکر شده توسط : lord_viper, CRazYFULL, amintatu1990
Di Di آفلاين
مدير بخش هك و كرك
*****

ارسال‌ها: 1,751
ثبت نام: اسفند ۱۳۸۵

تشکرها : 984
( 1671 تشکر در 624 ارسال )
شماره : #4
RE: برنامه فارسی نویسی صحیح در برنامه ها
ممنون که توضیح دادی . استفاده از یونی کد و کدهایی که گفتی مخصوصا برای Tooltip خیلی جالب بود. آقا جواد ( اگه درست گفته باشم ) کلا طرح برنامه و الگریتمهای اون خیلی جالب هست . فکر می کنم اگه بشه روش کار کرد تا به صورت یه تولبار در محیط برنامه نویسی یا محیط های ویرایشگر متن مثل ورود آماده اش کنیم خیلی خیلی کاربردی بشه. اگه موافق باشید با هم روش کار کنیم. ( حتی شاید بشه تو پروژه های گروهی روش کار کرد )


آغازی برای کرک
کرک قفل تلفنی
کارگاه آموزش کرک
دانلود ابزارهای کرک
استفاده از IDA‌ براي آنپك كردن يك برنامه "حرف نشنو"!
سورس ويروس، كرم ،‌تروجان
۲-شهريور-۱۳۸۶ ۱۶:۲۷:۱۲
يافتن تمام ارسال‌هاي اين کاربر نقل اين ارسال در يك پاسخ
Darg غايب
مدير بازنشسته
*****

ارسال‌ها: 1,080
ثبت نام: تير ۱۳۸۴

تشکرها : 373
( 614 تشکر در 200 ارسال )
شماره : #5
RE: برنامه فارسی نویسی صحیح در برنامه ها
Di Di نوشته :فکر می کنم اگه بشه روش کار کرد تا به صورت یه تولبار در محیط برنامه نویسی یا محیط های ویرایشگر متن مثل ورود آماده اش کنیم خیلی خیلی کاربردی بشه. اگه موافق باشید با هم روش کار کنیم. ( حتی شاید بشه تو پروژه های گروهی روش کار کرد )
این درخواستی که دادی فکر نمی کنم زیاد کار ببره. متاسفانه من وقتم کامل پره اما شما کار رو شروع کن در بخش پروژه های گروهی من قول همکاری می دم.


فیلم آموزشی Active کردن ویندوز XP فقط 2.7 مگ با کیفیت عالی
Theme جدید ویندوز XP فیروزه ای با 5 رنگ
مقاله اسرار رجیستری PDF
بسته نرم افزاری SidebarJS مخصوص ویندوز XP و فارسی زباتان
۳-شهريور-۱۳۸۶ ۰۱:۱۰:۱۹
مشاهده وب سايت اين کاربر يافتن تمام ارسال‌هاي اين کاربر نقل اين ارسال در يك پاسخ
ashkan آفلاين
بنيانگذار سايت
******

ارسال‌ها: 2,048
ثبت نام: آبان ۱۳۸۲

تشکرها : 0
( 79 تشکر در 43 ارسال )
شماره : #6
RE: برنامه فارسی نویسی صحیح در برنامه ها
ممنون ازت . عجب توابع و توضیحات کاملی منم خیلی مشکل با فارسی بخصوص توی بانک اطلاعاتی دارم واقعیتش اصلا هم نمیدونستم چطور میشه رفعش کرد. ممنون واقعا زحمت کشیدی.


آشنایی با نظریه زبان باعث شد تا بفهمم کامپیوتر اونی نیست که من میدونم.
۱۴-شهريور-۱۳۸۶ ۰۶:۴۱:۲۹
مشاهده وب سايت اين کاربر يافتن تمام ارسال‌هاي اين کاربر نقل اين ارسال در يك پاسخ
Darg غايب
مدير بازنشسته
*****

ارسال‌ها: 1,080
ثبت نام: تير ۱۳۸۴

تشکرها : 373
( 614 تشکر در 200 ارسال )
شماره : #7
RE: برنامه, فارسی‌نویسی صحیح در برنامه‌ها
یکی از دوستان سوال کرده بود چطور می شه تاریخ به شکل اعداد فارسی در کنترل MaskText مایکروسافت داشت.

من با اطلاعات همین تاپیک برنامه ضمیمه رو نوشم که چکونگی این کار رو درش می بینید.
خیلی خیلی سادست کد ها رو مطالعه کنید.


فايل پيوست شده
.zip  MaskFarsi.zip (اندازه: 1.5 KB / دفعات دانلود: 82)
دانلود کرده :skh1300, patrix_jk, siamak-s, علي اسكاي, bisarzaminn, fekr bartar, kamkar, hossein2020, babyy, Kaveh18, nedapish, sh_dll, xmatrix, menhajnet, lesanalgeib, sav68


فیلم آموزشی Active کردن ویندوز XP فقط 2.7 مگ با کیفیت عالی
Theme جدید ویندوز XP فیروزه ای با 5 رنگ
مقاله اسرار رجیستری PDF
بسته نرم افزاری SidebarJS مخصوص ویندوز XP و فارسی زباتان

(آخرين ويرايش ارسال در: ۱۴-آبان-۱۳۸۶ ۱۱:۵۴:۲۵ توسط Darg.)
۱۴-آبان-۱۳۸۶ ۱۱:۵۲:۵۲
مشاهده وب سايت اين کاربر يافتن تمام ارسال‌هاي اين کاربر نقل اين ارسال در يك پاسخ
Darg غايب
مدير بازنشسته
*****

ارسال‌ها: 1,080
ثبت نام: تير ۱۳۸۴

تشکرها : 373
( 614 تشکر در 200 ارسال )
شماره : #8
RE: فارسی‌نویسی صحیح در برنامه‌ها


فیلم آموزشی Active کردن ویندوز XP فقط 2.7 مگ با کیفیت عالی
Theme جدید ویندوز XP فیروزه ای با 5 رنگ
مقاله اسرار رجیستری PDF
بسته نرم افزاری SidebarJS مخصوص ویندوز XP و فارسی زباتان
۲۵-ارديبهشت-۱۳۸۷ ۲۳:۰۰:۲۷
مشاهده وب سايت اين کاربر يافتن تمام ارسال‌هاي اين کاربر نقل اين ارسال در يك پاسخ
Darg غايب
مدير بازنشسته
*****

ارسال‌ها: 1,080
ثبت نام: تير ۱۳۸۴

تشکرها : 373
( 614 تشکر در 200 ارسال )
شماره : #9
RE: فارسی‌نویسی صحیح در برنامه‌ها


فیلم آموزشی Active کردن ویندوز XP فقط 2.7 مگ با کیفیت عالی
Theme جدید ویندوز XP فیروزه ای با 5 رنگ
مقاله اسرار رجیستری PDF
بسته نرم افزاری SidebarJS مخصوص ویندوز XP و فارسی زباتان
۱۵-تير-۱۳۸۸ ۱۶:۴۵:۲۵
مشاهده وب سايت اين کاربر يافتن تمام ارسال‌هاي اين کاربر نقل اين ارسال در يك پاسخ
تشکر شده توسط : mojtabamalaekeh
ارسال پاسخ 


پرش به انجمن:


 قالب انجمن: