صفحه 1 از 5 123 ... آخرآخر
نمایش نتایج 1 تا 40 از 173

نام تاپیک: تلاش برای حل مشکل به هم ریختن فارسی نویسی در اندروید

  1. #1
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    Lightbulb تلاش برای حل مشکل به هم ریختن فارسی نویسی در اندروید

    مشکل زبان فارسی در اندروید دلفی حل شد
    سلام بر شما عزیزان مشکل برعکس شدن حروف فارسی در اندروید حل شد.
    این روش با هیچ برنامه ای درست نشده است.و من با یک ترفند بسیار جالب اون رو حل کردم.
    فقط مشکلی که در این روش هست،اینکه اگر شما از این روش استفاده کنید فایل apk شما کمی پرحجم خواهد شد.
    زیادنه..کمی مثلا اگر حجم فایل apk شما 5MB باشد با این روش می شود 5.450MB که خیلی هم باصرفه هست.
    حالا هرکی که این روش رو می خواهد بدونه در اینجا نظر بدهد تا برای شما توضیح دهم اون هم با عکس تصویری.

    باتشکر.

  2. #2
    کاربر دائمی آواتار hp1361
    تاریخ عضویت
    دی 1384
    محل زندگی
    تهران
    پست
    750

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    سلام

    مسلماً بیشتر دوستان برنامه نویس دوست دارند این مشکل رو پشت سر بگذارند.

    راه حل رو به اشتراک بگذارید همه علاقه مندان ممنون شما خواهند شد

    موفق باشیم

  3. #3
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    hp1361 عزیز چشم این مطلب رو می گذارم.
    من سعی می کنم با زبانی ساده این مطلب رو توضیح بدهم. درکنار اون اگر جایی رو متوجه نشدید عکس هم میگذارم.(من xe6 دارم روی اون توضیح می دهم)
    به نام خدا.
    اول: در دلفی(xe5,xe4,xe6) در منوی ابزار سمت راست یک Timage رو انتخاب و در form می گذارید.مانند عکس(برای دیدن عکس روی لینک کلیک کنید.)
    http://upload7.ir/imgs/2014-08/01265708350091554285.jpg

    دوم: در paint یا برنامه های طراحی مختلف متنی که به فارسی می خواهید در lable در دلفی بگذارید را در paint به فارسی بنویسید.
    http://upload7.ir/imgs/2014-08/74018542906336941149.jpg

    سوم:اون را با پسوند .bmp ذخیره کنید.

    چهارم: حالا این فایل paint رو در Timage بازیابی کنید.
    http://upload7.ir/imgs/2014-08/04213526229150644406.jpg

    پنجم: جای lable که قرار بود فارسی در ان باشد این Timage را جایگزین ان کنید.
    http://upload7.ir/imgs/2014-08/26249097798596052006.jpg

    ششم:بقیه جاهایی که می خواهید فارسی کنید از این روش استفاده کنید.

    اگر می خواهید نوشته button تان هم فارسی باشد که شکل button در paint طراحی کنید و در Timage بازیابی کنید.و تمام فرمان هایی که در button نوشته بودید در قسمت on click این Timage پیاده سازی کنید.
    http://upload7.ir/imgs/2014-08/71614224290133030511.jpg

    مشکلی که در اینجا هست این است که نمی توان showmessage هارو فارسی کرد که من در تلاش هستم که فارسی سازی ان ها رو هم کامل کنم.

    یک تشکر خشک و خالی هم بکنید برای ما هم کافی است
    با تشکر

  4. #4

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    دوستان لطفا تصویری از برعکس نویسی در آندروید بگذارید (من نمونه خرابش رو ندارم)
    قدیما واسه فتوشاپ و فلش ام ایکس یه برنامه نوشته بودم، ببینم شاید به درد حل این مشکل هم خورد.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  5. #5
    کاربر دائمی آواتار nice boy
    تاریخ عضویت
    مهر 1386
    محل زندگی
    Delphi Land
    پست
    373

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟



    میشه بپرسم وقتی می خواهید اطلاعات رو از دیتابیس بخونید و نمایش بدید چیکار می کنید؟ یا وقتی کاربر می خواد یه متنی رو وارد کنه باید چیکار کنه؟ حتما باید به کاربر بگیم عکسش رو درست کنه و تویه برنامه قرار بده!

  6. #6
    کاربر دائمی آواتار gbg
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    سن
    46
    پست
    691

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    آقا منم مشکل showmessage رو برات حل کردم!!!!
    چون این یکی رو درست نشون میده

  7. #7

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    دوستان یک تصویر بگذارید ببینم منظورتون از به هم ریختن دقیقا چیه، شاید برنامه ای که داشتم کمک کنه.
    آیا نوشته ای مثل سلام می شه م ل ا س ؟؟
    این قدر هم سربه سر هم نذارید
    بنده خدا ذوق کرده کارش رو ارائه داده، انصاف نیست همه رو با توان خودتون بسنجید.
    متشکرم.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  8. #8
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    gbg عزیز حل مشکل showmessage رو می تونی برای ما بازگوکنی؟

  9. #9
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    اگر از طریق موبایل باشه که کیبورد فارسی داشته باشه این اطلاعات رو می تونه فارسی تایپ کنه در dbf هم می توانید جدول رو مشخصات فارسی بدهید با مشکلی روبه رو نمی شید اگر هم روبه رو شدید دیتابیش هایی هستند که عکس قبول می کنند اگر در اون قسمت عکس نوشته فارسی رو بزنید قبول می کنه

  10. #10

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    نقل قول نوشته شده توسط You-See مشاهده تاپیک
    دوستان یک تصویر بگذارید ببینم منظورتون از به هم ریختن دقیقا چیه، شاید برنامه ای که داشتم کمک کنه.
    آیا نوشته ای مثل سلام می شه م ل ا س ؟؟
    اگه این مشکل حل بشه واقعاً عالیه، چرا که در حال حاضر برنامه های مبتنی با دلفی روی اکثر گوشی ها به درستی اجرا میشه و توی هر نسخه به لیست گوشی های پشتیبانی شده داره اضافه میشه.
    این عکس مربوط به یک گوشی HTC Sensation Z710e هست. همانطور که میبینی ShowMessage درست نشون داده میشه ولی متن کنترلها به هم ریخته هست.
    عکس های ضمیمه عکس های ضمیمه

  11. #11

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    با این برنامه کانورت کنید ببینید اوکی می شه؟
    اگر بشه برات کانورتور می نویسم
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: rar RTL.rar‏ (177.6 کیلوبایت, 710 دیدار)
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  12. #12

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    نقل قول نوشته شده توسط You-See مشاهده تاپیک
    با این برنامه کانورت کنید ببینید اوکی می شه؟
    اگر بشه برات کانورتور می نویسم
    نشد. ولی یه نکته ای هست حروف فارسی رو درست نشون نمیده ولی جایگاه کلمات درسته، یعنی اگه وسط متن فارسی کلمه انگلیسی به کار بره جای کلمات عوض نمیشه. بی زحمت کد این برنامه رو هم بزار تا ببینیم.
    این هم از نتیجه کار:
    عکس های ضمیمه عکس های ضمیمه

  13. #13

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    آره یادمه این مورد رو توش اصلاح کرده بودم.
    در مورد کاراکترها، می تونی ساپورت کاراکتر ها رو برام بذاری؟ به نظر می رسه برنامه شما یونیکد نیست.
    ببین مثلا رنج
    $#FEXX
    رو ساپورت می کنه، اگر ساپورت نمی کنه ولی یونیکده، شاید فونت پیش فرض رو باید عوض کنید، اگر باز هیچ کدوم نشد، بازه ای رو که برای فارسی نشون می ده بذار.
    این رو هم تست کن ببین مثلا خودت بزنی مالس چی می شه، به هم می چسبونه یا شعورش نمی رسه
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  14. #14

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    به همگی تبریک میگم. مشکل نمایش کلمات با کانورتور حاج یوسف حل شد.
    فقط مونده bidiMode مربوط به کامپوننتها!
    یوسف واقعاً ایول داری! این تا به امروز بهترین و بی عیب و نقص ترین کانورتور برای Delphi-Android هست. خوبیش اینه که وسط کلمات فارسی میشه از کلمات انگلیسی هم استفاده کرد و تا به حال چنین چیزی رو کسی عرضه نکرده(لا اقل من یکی که ندیدم).
    این هم نتیجه اجرای برنامه در یک گوشی اندروید:
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله BORHAN TEC : دوشنبه 10 شهریور 1393 در 14:34 عصر

  15. #15

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    قربانت
    این در اصل کانورتور فلش ام ایکس بود که قدیما دوره دانشجویی نوشتمش.
    حالا مورد چی بود؟ فونت مورد داشت؟
    اعداد رو هم چک کردی؟
    اگر اوکیه، یا من یا خودت یه تابع درست کنیم واسه این کار، خیال همه رو راحت کنیم.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  16. #16

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    قربانت
    جیگرتو
    فونت مشکل نداشت، توی ویندوز همه تنظیمات زبان رو روی فارسی ست کردم(چون این برنامه رو با نسخه های یونیکدی دلفی کامپایل نکردی). اعداد رو هم چک کردم و هیچ دوشواری نداره
    فقط یک مشکلی کشف کردم و اون هم اینه که اگه وسط کلمات Enter بزنیم کاراکتر مربوط به Enter رو حذف می کنه.

  17. #17

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    سورس رو بازنگری می کنم.
    ورژن مال موقعیه که یونیکد اختراع نشده بود.
    با ورژن جدید کامپایل می کنم
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  18. #18
    کاربر دائمی آواتار Delphi 2010
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    اصفهان
    سن
    33
    پست
    285

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    دوستان کسی Delphi XE7 رو دانلود کرده ببینه مشکل فارسی حل شده یا نه
    از آقا یوسف ممنون بابت زحمت هایی که می کشن

  19. #19

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    مگه XE7 اومد؟!
    چه خوب! توش امکان نوشتن برنامه برای AndroidWear هم اضافه شده؟

  20. #20
    کاربر دائمی آواتار firststep
    تاریخ عضویت
    مهر 1387
    محل زندگی
    ایران-خواستم از جنبه تفاهم باهم بگم
    پست
    502

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    سلام عزیز منتظریما برای حالا تابع یا کمپوننت......

    دیدین چه جالب این بحث و این راه حل از به زبان اوردن یک راه حل ساده و غیر کار امد که هممون هم می دونستیم شروع شد.....

  21. #21
    کاربر دائمی آواتار firststep
    تاریخ عضویت
    مهر 1387
    محل زندگی
    ایران-خواستم از جنبه تفاهم باهم بگم
    پست
    502

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    ایا برای استفاده از این تابع بهتر نیست برای همه گیر شدنش توی کامپوننت های دیگه به دون ویرایش اونها از CLASS HELPER استفاده کنیم

  22. #22
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    نقل قول نوشته شده توسط Delphi 2010 مشاهده تاپیک
    دوستان کسی Delphi XE7 رو دانلود کرده ببینه مشکل فارسی حل شده یا نه
    از آقا یوسف ممنون بابت زحمت هایی که می کشن
    واقعا اقا یوسف زحمت کشیدند من هم روشی رو پیدا کرده ام که از کانکتور اقا یوسف سریعتر جواب می دهد. هرکس که این فونت رو می خواهد در تالار به بخش فونت فارسی برای دلفی اندروید مراجعه کند

    حالا دوست من دلفی xe7 هم اومده اپلیکیشن های جورواجور و بهتری هم در اون قرار داده اما هنوز که هنوز هست با زبان هایی که از راست به چپ هستند مثل فارسی مشکل داره.

  23. #23
    کاربر دائمی آواتار gbg
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    سن
    46
    پست
    691

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    مشکل عدم نمایش رو قبلا اصلاح کردن
    مشکل راست به چپ مونده
    بعدش هم برنامه های فارسی بیشتر هنگ میکنه

  24. #24

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    مشکل عدم نمایش رو قبلا اصلاح کردن
    مشکل اختلاط فارسی و انگلیسی در یک متن هم در اون روش حل شده؟
    چه کسی / شرکتی؟
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  25. #25
    کاربر دائمی آواتار gbg
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    سن
    46
    پست
    691

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    خود embarcadero چند تا یونیت داره که میزاری تو مسیر پروژه بعدش اون مشکل حل میشه

  26. #26
    کاربر دائمی آواتار hp1361
    تاریخ عضویت
    دی 1384
    محل زندگی
    تهران
    پست
    750

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    نقل قول نوشته شده توسط gbg مشاهده تاپیک
    خود embarcadero چند تا یونیت داره که میزاری تو مسیر پروژه بعدش اون مشکل حل میشه
    سلام

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

    ممنون

  27. #27
    کاربر دائمی آواتار nice boy
    تاریخ عضویت
    مهر 1386
    محل زندگی
    Delphi Land
    پست
    373

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    نقل قول نوشته شده توسط gbg مشاهده تاپیک
    خود embarcadero چند تا یونیت داره که میزاری تو مسیر پروژه بعدش اون مشکل حل میشه
    جالبه من خیلی سرچ کردم ولی این یونیتها روپیدا نکردم میشه لطفا لینک بدبد

  28. #28
    کاربر دائمی آواتار zoghal
    تاریخ عضویت
    شهریور 1383
    محل زندگی
    همدان
    سن
    41
    پست
    401

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    نقل قول نوشته شده توسط BORHAN TEC مشاهده تاپیک
    اگه این مشکل حل بشه واقعاً عالیه، چرا که در حال حاضر برنامه های مبتنی با دلفی روی اکثر گوشی ها به درستی اجرا میشه و توی هر نسخه به لیست گوشی های پشتیبانی شده داره اضافه میشه.
    این عکس مربوط به یک گوشی HTC Sensation Z710e هست. همانطور که میبینی ShowMessage درست نشون داده میشه ولی متن کنترلها به هم ریخته هست.
    دوست عزیز آیا امکانش هست این پروژه تست رو اتچ کنید و تا من هم چندتا تست بزنم.
    متاسفانه اغلب برنامه نویسان ایرانی به فونت نگاهی بسیار سطحی دارند. حتی خود طراحان فونت هم اطلاعاتی فنی کاملی نسبت به جزئیات فنی فونت ندارند. من دوساله دارم روی فونت ها کار میکنم و مشکل فونت وب رو من حل کردم و خیلی از مشکلات دیگر.
    آنچه در تصویر دیده میشه میتونه مربوط به فونت هم باشه. باید بگم آنقدر در پشت صحنه فونت ها داستان وجود دارد که یک تحقیق ۲-۳ ماه شد ۲ سال. برای مثال هنوز هم که هنوز تو برنامه نویسی با winform فکر میکنم نمی تونید از فونت ها در سایز های کمتر از ۱۴ به درستی استفاده کنید.
    اما این مشکل رو هم حل کردم. چون از فونت بود. این هم نمونه تستها:
    http://soozanchi.ir/screens/soft-font/

    چندتا از دوستان هم برای برای اپ های native اندروید و ای او اس همین مشکل رو داشتند که یک نسخه آزمایشی جواب مثبت بوده.
    اگر یک نمونه تست اپ در اختیارم بزارید این مورد رو هم تست میکنم شاید مشکل از فونت باشه.

  29. #29

    نقل قول: ؟!؟!؟!؟مشکل زبان فارسی در اندروید حل شد؟!؟!؟!؟

    تا همین جا هم که راهی پیدا شده که فارسی در دلفی اندروید داشته باشی خیلیه.
    ممنون delphi-xe7

  30. #30

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    جناب You-See ممنون اگر خودتون وقتشو ندارید لطفا سورس برنامه تون را بگذارید تا سایرین تابعش کنند

  31. #31
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

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

  32. #32

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    نه عزیزم برای سورس داستانی پیش اومده فعلا معذورم. اگر مشکل رفع بشه ایشالا می گذارم. بخیل که نیستم
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  33. #33
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    اختیار داری من که منظورم این نبود

  34. #34
    کاربر جدید
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران - تجريش
    پست
    8

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    با سلام خدمت دوستان عزیز،
    من یک کلاس پیدا کردم که کار تبدیل کاراکترها رو انجام میده تا نمایش فارسی (عربی) درست بشه. فرقی هم نداره اندروید یا iOS. این کلاس به زبان جاوا است که من اون رو به Object Pascal ترجمه کردم و یک سری ایرادات اون رو حل کردم و نتیجه بدست آمده، معادل کانورتور آقای یوسف هست، با این تفاوت که سورسش در اختیارماست. در حال حاضر تغییرات در مراحل پایانی است. انشاالله تا آخر هفته به اتمام میرسه و در اوایل هفته بعد در همین تاپیک سورس رو قرار میدم تا دوستان استفاده کنند و با کمک دسته جمعی بتونیم روتین رو بهتر کنیم و ارتقا بدیم. بعد از این که کانورتور تمام شد، می خوام رو ترجمه همزمان کار کنیم که در این مرحله از تمامی دوستان کمک می طلبم. ترجمه همزمان هم بدین صورت است که وقتی کاربر در حال تایپ در Edit یا هر کنترل دیگری است بتوان کانورتور رو صدا زد و متن را به صورت درست نمایش داد. راستی سورس رو برای جناب Marco Cantu که مدیر محصول دلفی در شرکت امبارکادرو هستند نیز خواهم فرستاد تا شاید کمکی باشه برای پیشرفت ساپورت BiDi در بستر فایرمانکی.
    در پایان، برای دوستانی که علاقه به تحقیق دارند می توانند با کلمات کلیدی Android Arabic Disconnected Letter یا ArabicUtilities یا Arabic Reshaper در گوگل جستجو کنند.

    Screenshot_2014-10-07-11-26-05.png

    با تشکر فراوان
    مهدی کریم پور
    mkarimpour@gmail.com

  35. #35
    کاربر دائمی آواتار zoghal
    تاریخ عضویت
    شهریور 1383
    محل زندگی
    همدان
    سن
    41
    پست
    401

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    این مشکل در وب هم وجود داشت و سالار کابلی پروژه ای رو با اسم persianParser در گیت هاب دارد که همین کار رو انجام می دهد.
    https://github.com/sallar/persianParser

  36. #36
    کاربر دائمی آواتار hp1361
    تاریخ عضویت
    دی 1384
    محل زندگی
    تهران
    پست
    750

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    سلام

    آقای مهندس عشایری کاری در این خصوص انجام ندادند؟

  37. #37
    کاربر جدید
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران - تجريش
    پست
    8

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    با سلام. من سورس این کلاس را در این پست قرار می دهم. این روال اشکالاتی دارد که باید رفع شود. دوستان یاری کنند بویژه آقا یوسف عزیز.






    unit FarsiReshaper;

    interface

    uses System.Classes, System.Math;

    type
    TStruc = class sealed (TObject)
    public
    Character,
    EndGlyph,
    IniGlyph,
    MidGlyph,
    IsoGlyph: Char;
    constructor Create(ACharacter, AEndGlyph, AIniGlyph, AMidGlyph, AIsoGlyph: Char);
    end;

    TFarsi = class sealed (TObject)
    strict private
    const N_DISTINCT_CHARACTERS = 43;
    class var SzLamAndAlef: String;
    class var SzLamStickAndAlef: String;
    class var SzLa: String;
    class var SzLaStick: String;
    class var SzLamAndAlefWoosim: String;
    class var SzLamStickAndAlefWoosim: String;
    class var SzLaWoosim: String;
    class var SzLaStickWoosim: String;
    class var ArrStruc: array of TStruc;
    class var ArrStrucWoosim: array of TStruc;
    class var IsFarsiConversionNeeded : Boolean;

    class function IsFarsiChar(Ch: Char): Boolean;
    class function FarsiReverse(S: String): String;
    class function IsFromTheSet1(Ch: Char): Boolean;
    class function IsFromTheSet2(Ch: Char): Boolean;
    class function CharIsLTR(Ch: Char): Boolean;
    class function CharIsRTL(Ch: Char): Boolean;
    class function ReorderWords(S: String): String;
    class function ConvertWord(S: String): String;
    public
    class function Convert(S: String): String;
    class function ConvertBackToRealFarsi(S: String): String;
    class constructor Create;
    end;

    implementation

    uses
    System.StrUtils, System.SysUtils, System.Character;

    { TStruc }

    constructor TStruc.Create(ACharacter, AEndGlyph, AIniGlyph, AMidGlyph, AIsoGlyph: Char);
    begin
    Character:= ACharacter;
    EndGlyph:= AEndGlyph;
    IniGlyph:= AIniGlyph;
    MidGlyph:= AMidGlyph;
    IsoGlyph:= AIsoGlyph;
    end;

    { TFarsi }

    class function TFarsi.FarsiReverse(S: String): String;
    var
    LRev: String;
    I: Integer;
    begin
    Result:= EmptyStr;
    LRev:= EmptyStr;

    S:= ReverseString(S);

    I:= 0;
    while (I < S.Length) do
    begin
    if S.Chars[I].IsDigit then
    begin
    LRev:= EmptyStr;
    while (I < S.Length) and (S.Chars[I].IsDigit or (S.Chars[I] = '/') or (S.Chars[I] = '.')) do
    begin
    LRev:= LRev + S.Chars[I];
    Inc(I);
    end;

    LRev:= ReverseString(LRev);
    Result:= Result + LRev;
    end
    else
    begin
    Result:= Result + S.Chars[I];
    Inc(I);
    end;
    end;
    end;

    class function TFarsi.CharIsLTR(Ch: Char): Boolean;
    begin
    Result:= ((Ch >= Char(65)) and (Ch <= Char(122))) or Ch.IsDigit;
    end;

    class function TFarsi.CharIsRTL(Ch: Char): Boolean;
    begin
    Result:= (Ch >= Char($0621))
    or
    (Ch = Char($060C)) // ،
    or
    (Ch = Char($061B)) // ؛
    or
    (Ch = Char($061F)) // ؟
    or
    ((Ch >= Char($0021)) and (Ch <= Char($002F)))
    or
    ((Ch >= Char($003A)) and (Ch <= Char($003F)))
    or
    (Ch = Char($005B))
    or
    (Ch = Char($005D))
    or
    (Ch = Char($007B))
    or
    (Ch = Char($007D));
    end;

    class function TFarsi.ReorderWords(S: String): String;
    const
    ST_RTL = 0;
    ST_LTR = 1;
    var
    LPrevWord: String;
    LState, LPreState, I: Integer;
    begin
    Result:= EmptyStr;
    LPrevWord:= EmptyStr;
    LState:= ST_RTL;
    LPreState:= ST_RTL;

    I:= 0;
    while (I < S.Length) do
    begin
    if CharIsLTR(S.Chars[I]) and (LState <> ST_LTR) then
    begin
    // State changed to LTR
    LPreState:= ST_RTL;
    LState:= ST_LTR;
    Result:= Result + LPrevWord;
    LPrevWord:= S.Chars[I];
    end
    else
    if CharIsRTL(S.Chars[I]) and (LState <> ST_RTL) then
    begin
    // State changed to RTL
    LPreState:= ST_LTR;
    LState:= ST_RTL;
    Result:= LPrevWord + Result;
    LPrevWord:= S.Chars[I];
    end
    else
    // State is not changed
    begin
    case LState of
    ST_RTL: LPrevWord:= S.Chars[I] + LPrevWord;
    ST_LTR: LPrevWord:= LPrevWord + S.Chars[I];
    end;
    //LPrevWord:= LPrevWord + S.Chars[I];
    end;

    Inc(I);
    end;

    // Result:= LPrevWord + Result;


    case LPreState of
    ST_RTL: Result:= LPrevWord + Result;
    ST_LTR: Result:= Result + LPrevWord;
    end;

    end;

    class function TFarsi.ConvertWord(S: String): String;
    var
    LLinkBefore, LLinkAfter: Boolean;
    LIdx, I: Integer;
    LChr: Char;

    begin
    Result:= DupeString(' ', S.Length);
    LLinkBefore:= False;
    LLinkAfter:= False;
    I:= 0;
    LIdx:= 0;

    if (not TFarsi.IsFarsiConversionNeeded) or (S.IsEmpty) then
    Exit(S);

    while (I < S.Length) do
    begin
    if IsFarsiChar(S.Chars[I]) then
    begin
    LIdx:= 0;
    LChr:= #0;

    while (LIdx < N_DISTINCT_CHARACTERS) do
    begin
    if ArrStruc[LIdx].Character = S.Chars[I] then
    Break;

    Inc(LIdx);
    end;

    if (I = S.Length - 1) then
    LLinkAfter:= False
    else
    LLinkAfter:= IsFromTheSet1(S.Chars[I + 1]) or IsFromTheSet2(S.Chars[I + 1]);

    if I = 0 then
    LLinkBefore:= False
    else
    LLinkBefore:= IsFromTheSet1(S.Chars[I - 1]);

    if (LIdx < N_DISTINCT_CHARACTERS) then
    begin
    if LLinkBefore and LLinkAfter then
    LChr:= ArrStruc[LIdx].MidGlyph
    else
    if LLinkBefore and not LLinkAfter then
    LChr:= ArrStruc[LIdx].EndGlyph
    else
    if not LLinkBefore and LLinkAfter then
    LChr:= ArrStruc[LIdx].IniGlyph
    else
    if not LLinkBefore and not LLinkAfter then
    LChr:= ArrStruc[LIdx].IsoGlyph;
    end
    else
    LChr:= S.Chars[I];

    Result[I]:= LChr;
    end
    else
    Result[I]:= S.Chars[I];

    Inc(I);
    end;

    Result:= Result.Replace(Char($200c), ' '); // Change NO SPACE to SPACE
    Result:= Result.Replace(szLamAndAlef, szLa); // Join 'Lam' and 'Alef' and make 'La'
    Result:= Result.Replace(szLamStickAndAlef, szLaStick); // Join 'Lam Stick' and 'Alef' and make 'La Stick'
    Result:= ReorderWords(Result);
    end;

    class function TFarsi.Convert(S: String): String;
    var
    LArrWords: TArray<String>;
    I: Integer;
    begin
    // Result:= ConvertWord(S);

    Result:= EmptyStr;
    LArrWords:= S.Split([' ']);
    for I := Low(LArrWords) to High(LArrWords) do
    begin
    LArrWords[I]:= ConvertWord(LArrWords[I]);
    Result:= LArrWords[I] + ' ' + Result;
    end;

    end;

    class function TFarsi.ConvertBackToRealFarsi(S: String): String;
    var
    LSB: TStringBuilder;
    I, J: Integer;
    LFound: Boolean;
    begin
    Result:= EmptyStr;
    I:= 0;
    J:= 0;

    if not IsFarsiConversionNeeded then
    Exit(S);

    LSB:= TStringBuilder.Create(EmptyStr);
    try
    while (I < S.Length) do
    begin
    LFound:= False;
    for J := Low(ArrStruc) to High(ArrStruc) do
    begin
    if (S.Chars[I] = ArrStruc[J].MidGlyph)
    or
    (S.Chars[I] = ArrStruc[J].IniGlyph)
    or
    (S.Chars[I] = ArrStruc[J].EndGlyph)
    or
    (S.Chars[I] = ArrStruc[J].IsoGlyph) then
    begin
    LSB.Append(ArrStruc[J].Character);
    LFound:= True;
    Break;
    end;
    end;

    if not LFound then
    LSB.Append(S.Chars[I]);

    Inc(I);
    end;

    Result:= LSB.ToString;
    Result:= Result.Replace(TFarsi.SzLa, 'لا');
    Result:= Result.Replace(TFarsi.SzLaStick, 'لا');
    //Result:= TFarsi.ReorderWords(Result);
    finally
    FreeAndNil(LSB);
    end;
    end;

    class constructor TFarsi.Create;
    begin
    TFarsi.IsFarsiConversionNeeded:= True;
    TFarsi.SzLamAndAlef := Char($FEDF) + Char($FE8E); // Lam + Alef
    TFarsi.SzLamStickAndAlef := Char($FEE0) + Char($FE8E); // Lam (Sticky !!!)+
    TFarsi.SzLa := Char($FEFB); // La
    TFarsi.SzLaStick := Char($FEFC); // La (Sticky!!!)
    TFarsi.SzLamAndAlefWoosim := Char($E1) + Char($BB); // Lam + Alef
    TFarsi.SzLamStickAndAlefWoosim := Char($90) + Char($BB); // Lam (Sticky !!!)+ Alef
    TFarsi.SzLaWoosim := Char($D9); // La
    TFarsi.SzLaStickWoosim := Char($D9); // La

    {Array}
    TFarsi.ArrStruc:=
    [
    TStruc.Create(Char($630), Char($FEAC), Char($FEAB), Char($FEAC), Char($FEAB)),
    TStruc.Create(Char($62F), Char($FEAA), Char($FEA9), Char($FEAA), Char($FEA9)),
    TStruc.Create(Char($62C), Char($FE9E), Char($FE9F), Char($FEA0), Char($FE9D)),
    TStruc.Create(Char($62D), Char($FEA2), Char($FEA3), Char($FEA4), Char($FEA1)),
    TStruc.Create(Char($62E), Char($FEA6), Char($FEA7), Char($FEA8), Char($FEA5)),
    TStruc.Create(Char($647), Char($FEEA), Char($FEEB), Char($FEEC), Char($FEE9)),
    TStruc.Create(Char($639), Char($FECA), Char($FECB), Char($FECC), Char($FEC9)),
    TStruc.Create(Char($63A), Char($FECE), Char($FECF), Char($FED0), Char($FECD)),
    TStruc.Create(Char($641), Char($FED2), Char($FED3), Char($FED4), Char($FED1)),
    TStruc.Create(Char($642), Char($FED6), Char($FED7), Char($FED8), Char($FED5)),
    TStruc.Create(Char($62B), Char($FE9A), Char($FE9B), Char($FE9C), Char($FE99)),
    TStruc.Create(Char($635), Char($FEBA), Char($FEBB), Char($FEBC), Char($FEB9)),
    TStruc.Create(Char($636), Char($FEBE), Char($FEBF), Char($FEC0), Char($FEBD)),
    TStruc.Create(Char($637), Char($FEC2), Char($FEC3), Char($FEC4), Char($FEC1)),
    TStruc.Create(Char($643), Char($FEDA), Char($FEDB), Char($FEDC), Char($FED9)),
    TStruc.Create(Char($645), Char($FEE2), Char($FEE3), Char($FEE4), Char($FEE1)),
    TStruc.Create(Char($646), Char($FEE6), Char($FEE7), Char($FEE8), Char($FEE5)),
    TStruc.Create(Char($62A), Char($FE96), Char($FE97), Char($FE98), Char($FE95)),
    TStruc.Create(Char($627), Char($FE8E), Char($FE8D), Char($FE8E), Char($FE8D)),
    TStruc.Create(Char($644), Char($FEDE), Char($FEDF), Char($FEE0), Char($FEDD)),
    TStruc.Create(Char($628), Char($FE90), Char($FE91), Char($FE92), Char($FE8F)),
    TStruc.Create(Char($64A), Char($FEF2), Char($FEF3), Char($FEF4), Char($FEF1)),
    TStruc.Create(Char($633), Char($FEB2), Char($FEB3), Char($FEB4), Char($FEB1)),
    TStruc.Create(Char($634), Char($FEB6), Char($FEB7), Char($FEB8), Char($FEB5)),
    TStruc.Create(Char($638), Char($FEC6), Char($FEC7), Char($FEC8), Char($FEC5)),
    TStruc.Create(Char($632), Char($FEB0), Char($FEAF), Char($FEB0), Char($FEAF)),
    TStruc.Create(Char($648), Char($FEEE), Char($FEED), Char($FEEE), Char($FEED)),
    TStruc.Create(Char($629), Char($FE94), Char($FE93), Char($FE93), Char($FE93)),
    TStruc.Create(Char($649), Char($FEF0), Char($FEEF), Char($FEF0), Char($FEEF)),
    TStruc.Create(Char($631), Char($FEAE), Char($FEAD), Char($FEAE), Char($FEAD)),
    TStruc.Create(Char($624), Char($FE86), Char($FE85), Char($FE86), Char($FE85)),
    TStruc.Create(Char($621), Char($FE80), Char($FE80), Char($FE80), Char($FE80)),
    TStruc.Create(Char($626), Char($FE8A), Char($FE8B), Char($FE8C), Char($FE89)),
    TStruc.Create(Char($623), Char($FE84), Char($FE83), Char($FE84), Char($FE83)),
    TStruc.Create(Char($622), Char($FE82), Char($FE81), Char($FE82), Char($FE81)),
    TStruc.Create(Char($625), Char($FE88), Char($FE87), Char($FE88), Char($FE87)),
    TStruc.Create(Char($67E), Char($FB57), Char($FB58), Char($FB59), Char($FB56)),
    TStruc.Create(Char($686), Char($FB7B), Char($FB7C), Char($FB7D), Char($FB7A)),
    TStruc.Create(Char($698), Char($FB8B), Char($FB8A), Char($FB8B), Char($FB8A)),
    TStruc.Create(Char($6A9), Char($FB8F), Char($FB90), Char($FB91), Char($FB8E)),
    TStruc.Create(Char($6AF), Char($FB93), Char($FB94), Char($FB95), Char($FB92)),
    TStruc.Create(Char($6CC), Char($FBFD), Char($FEF3), Char($FEF4), Char($FBFC)),
    TStruc.Create(Char($6C0), Char($FBA5), Char($FBA4), Char($FBA5), Char($FBA4))
    ];

    TFarsi.ArrStrucWoosim:=
    [
    TStruc.Create(Char($630), Char($B5), Char($82), Char($B5), Char($82)),
    TStruc.Create(Char($62F), Char($B4), Char($81), Char($B4), Char($81)),
    TStruc.Create(Char($62C), Char($9B), Char($B1), Char($F9), Char($BF)),
    TStruc.Create(Char($62D), Char($9C), Char($B2), Char($FA), Char($C0)),
    TStruc.Create(Char($62E), Char($9D), Char($B3), Char($FE), Char($C1)),
    TStruc.Create(Char($647), Char($AC), Char($E4), Char($93), Char($D5)),
    TStruc.Create(Char($639), Char($C9), Char($D3), Char($8B), Char($A4)),
    TStruc.Create(Char($63A), Char($CA), Char($DD), Char($8C), Char($A5)),
    TStruc.Create(Char($641), Char($A6), Char($DE), Char($8D), Char($CC)),
    TStruc.Create(Char($642), Char($A7), Char($DF), Char($8E), Char($CE)),
    TStruc.Create(Char($62B), Char($BD), Char($AF), Char($EA), Char($99)),
    TStruc.Create(Char($635), Char($C4), Char($C8), Char($87), Char($A0)),
    TStruc.Create(Char($636), Char($C5), Char($CB), Char($88), Char($A1)),
    TStruc.Create(Char($637), Char($C6), Char($CD), Char($CD), Char($A2)),
    TStruc.Create(Char($643), Char($CF), Char($E0), Char($8F), Char($A8)),
    TStruc.Create(Char($645), Char($D2), Char($E2), Char($91), Char($AA)),
    TStruc.Create(Char($646), Char($D4), Char($E3), Char($92), Char($AB)),
    TStruc.Create(Char($62A), Char($BD), Char($AF), Char($EA), Char($99)),
    TStruc.Create(Char($627), Char($BB), Char($80), Char($BB), Char($80)),
    TStruc.Create(Char($644), Char($D1), Char($E1), Char($90), Char($A9)),
    TStruc.Create(Char($628), Char($BC), Char($AE), Char($E9), Char($98)),
    TStruc.Create(Char($64A), Char($DC), Char($E6), Char($95), Char($DC)),
    TStruc.Create(Char($633), Char($C2), Char($B8), Char($B8), Char($9E)),
    TStruc.Create(Char($634), Char($C3), Char($B9), Char($B9), Char($9F)),
    TStruc.Create(Char($638), Char($C7), Char($CD), Char($CD), Char($C7)),
    TStruc.Create(Char($632), Char($B7), Char($B7), Char($B7), Char($B7)),
    TStruc.Create(Char($648), Char($94), Char($94), Char($94), Char($94)),
    TStruc.Create(Char($629), Char($DA), Char($DA), Char($DA), Char($DA)),
    TStruc.Create(Char($649), Char($DC), Char($E6), Char($95), Char($DC)),
    TStruc.Create(Char($631), Char($B6), Char($B6), Char($B6), Char($B6)),
    TStruc.Create(Char($624), Char($E7), Char($E7), Char($E7), Char($E7)),
    TStruc.Create(Char($621), Char($BA), Char($BA), Char($BA), Char($BA)),
    TStruc.Create(Char($626), Char($D7), Char($E8), Char($97), Char($D7)),
    TStruc.Create(Char($623), Char($80), Char($80), Char($80), Char($80)),
    TStruc.Create(Char($622), Char($80), Char($80), Char($80), Char($80)),
    TStruc.Create(Char($625), Char($80), Char($80), Char($80), Char($80)),
    TStruc.Create(Char($67E), Char($BC), Char($AE), Char($E9), Char($98)),
    TStruc.Create(Char($686), Char($9B), Char($B1), Char($F9), Char($BF)),
    TStruc.Create(Char($698), Char($B7), Char($B7), Char($B7), Char($B7)),
    TStruc.Create(Char($6A9), Char($CF), Char($E0), Char($8F), Char($A8)),
    TStruc.Create(Char($6AF), Char($CF), Char($E0), Char($8F), Char($A8)),
    TStruc.Create(Char($6CC), Char($DC), Char($E6), Char($95), Char($DC)),
    TStruc.Create(Char($6C0), Char($AC), Char($E4), Char($93), Char($D5))
    ];
    end;

    class function TFarsi.IsFarsiChar(Ch: Char): Boolean;
    begin
    Result:= ((Ch >= Char($0621)) and (Ch <= Char($064a)))
    or
    (Ch = Char($067e))
    or
    (Ch = Char($0686))
    or
    (Ch = Char($0698))
    or
    (Ch = Char($06a9))
    or
    (Ch = Char($06af))
    or
    (Ch = Char($06cc))
    or
    (Ch = Char($06c0));
    end;

    class function TFarsi.IsFromTheSet1(Ch: Char): Boolean;
    var
    LTheSet1: array of Char;
    I: Integer;
    begin
    Result:= False;
    I:= 0;
    LTheSet1:= [
    Char($62C), Char($62D), Char($62E), Char($647), Char($639), Char($63A),
    Char($641), Char($642), Char($62B), Char($635), Char($636), Char($637),
    Char($643), Char($645), Char($646), Char($62A), Char($644), Char($628),
    Char($64A), Char($633), Char($634), Char($638), Char($67E), Char($686),
    Char($6A9), Char($6AF), Char($6CC), Char($626)
    ];

    while (I < 28) do
    begin
    if Ch = LTheSet1[I] then
    Exit(True);

    Inc(I);
    end;
    end;

    class function TFarsi.IsFromTheSet2(Ch: Char): Boolean;
    var
    LTheSet2: array of Char;
    I: Integer;
    begin
    Result:= False;
    I:= 0;
    LTheSet2:= [
    Char($627), Char($623), Char($625), Char($622), Char($62F), Char($630),
    Char($631), Char($632), Char($648), Char($624), Char($629), Char($649),
    Char($698), Char($6C0)
    ];

    while (I < 14) do
    begin
    if Ch = LTheSet2[I] then
    Exit(True);

    Inc(I);
    end;
    end;

    end.




    - موارد مشابه برای ترجمه وجود دارند که در زیر آمده است:
    - https://github.com/agawish/Better-Arabic-Reshaper
    - http://www.java2s.com/Code/Android/S...withArabic.htm
    - بهترین مورد پیاده شده تا کنون FriBiDi است. friBiDi.org

    با تشکر از همه دوستان که در ارتقا و بهبود این روال تلاش خواهند کرد.
    مهدی کریم پور

  38. #38
    کاربر دائمی آواتار Delphi 2010
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    اصفهان
    سن
    33
    پست
    285

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    حالا چطوری باید استفاده کنیم عزیزان

  39. #39
    کاربر جدید
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    https://t.me/pump_upp
    پست
    8

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    سلام با تشکر از دوست خیلی خوبم Mkarimpour که زحمت این تابع فوق العاده رو کشیده من یه کاری کردم البته شاید به ذهن بقیه هم رسیده باشه اما گفتم سهم کوچیکی داشته باشم. با این تابع میتونید در حال تایپ کردن فارسی رو درست نمایش بدبد. البته دارم سعی می کنم کامپوننت کنمش اما Edit یه سری محدودیت داره تو کلاس هاش که دارم سعی می کنم درستش کنم.

    unit DPAEdit;

    interface

    uses
    System.SysUtils, System.Classes, FMX.Types, FMX.Controls,
    FMX.Controls.Presentation, FMX.Edit, StrUtils;

    type
    TDPAEdit = class(TEdit)
    private
    FBeforChars: String;
    FSpaceKeyPressed: Boolean;
    protected
    procedure SetOnTyping;
    procedure SetOnValidate;
    published
    Property SpaceKeyPressed : Boolean Read FSpaceKeyPressed Write FSpaceKeyPressed;
    end;

    procedure Register;

    implementation

    uses FarsiReshaper;

    procedure Register;
    begin
    RegisterComponents('Standard', [TDPAEdit]);
    end;

    { TDPAEdit }

    {constructor TDPAEdit.Create;
    begin
    inherited;
    FSpaceKeyPressed := False;
    end; }

    procedure TDPAEdit.SetOnTyping;
    var
    RealBefore,
    LastChar: String;
    begin
    inherited;
    LastChar := Copy(Text.Trim, Text.Trim.Length, 1);
    RealBefore := ReverseString(TFarsi.ConvertBackToRealFarsi(FBefor Chars)).TrimLeft;

    if Text.Trim.Length > RealBefore.Trim.Length Then
    Begin
    if FSpaceKeyPressed then
    Begin
    Text := TFarsi.Convert(RealBefore + ' ' + LastChar);
    FSpaceKeyPressed := False;
    End
    Else
    Text := TFarsi.Convert(RealBefore + LastChar);
    End
    Else if RealBefore.Trim.Length = Text.Trim.Length Then
    FSpaceKeyPressed := True
    Else if Text.Trim.Length < RealBefore.Trim.Length Then
    Text := TFarsi.Convert(Copy(RealBefore, 1, RealBefore.Length - 1));
    end;

    procedure TDPAEdit.SetOnValidate;
    begin
    inherited;
    FBeforChars := Text;
    end;

    end.

  40. #40

    نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید

    سلام.
    هیچ کدام از این کدها رو نتونستم به درستی تست کنم.
    البته روی XE6 که جواب نمی ده، باید اصلاحاتی انجام می دادم، اما باز هم نشد.
    اگر نمونه پروژه ای دارید اتچ کنید بررسی می کنم.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

صفحه 1 از 5 123 ... آخرآخر

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

  1. فارسی نویسی در اندروید
    نوشته شده توسط javanddev در بخش Android Studio
    پاسخ: 5
    آخرین پست: شنبه 22 آذر 1393, 09:11 صبح
  2. سوال: مشکل در شناسایی فیلدهای فارسی برای عملیات گزارش گیری
    نوشته شده توسط veniz2008 در بخش C#‎‎
    پاسخ: 6
    آخرین پست: سه شنبه 16 شهریور 1389, 14:27 عصر
  3. بیاید برای همیشه مشکل دلفی با فارسی رو حل کنیم
    نوشته شده توسط nassim_20 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 10
    آخرین پست: سه شنبه 04 تیر 1387, 12:51 عصر
  4. راه حل برای مشکل ک و ی فارسی
    نوشته شده توسط Nightbat در بخش ASP.NET Web Forms
    پاسخ: 20
    آخرین پست: پنج شنبه 04 مرداد 1386, 13:30 عصر
  5. برای این مشکل چه راه حلی پیشنهاد میکنید ؟ ( فارسی)
    نوشته شده توسط khafanovich در بخش برنامه نویسی در Delphi
    پاسخ: 6
    آخرین پست: سه شنبه 13 دی 1384, 01:50 صبح

برچسب های این تاپیک

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

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