PDA

View Full Version : سوال: مشکل در نمایش حروف فارسی



sm4899
پنج شنبه 21 آذر 1387, 23:09 عصر
با سلام
وقتی یک حرف از یک کلمه فارسی جدا میشه اگه حرف کوچیک باشه خودبخو د بصورت بزرگ
میشه کسی میدونه مشکل چطوری حل میشه ؟
مانند فایل ضمیمه

Parham.D
جمعه 22 آذر 1387, 07:52 صبح
فكر ميكنم اشكالي در كار نباشه، يعني درستش همينه. كلمه "پيشرفت" درست هست نه زماني كه يك ت چسبان داشته باشه. لطفا كمي بيشتر توضيح بديد.

amin_programmer
جمعه 22 آذر 1387, 15:13 عصر
اگه منظور شما کلماتی مثل زیر هست:
یـ ـیـ ـی ی
غـ ـغـ ـغ غ

باید قبل یا بعد از حرف کلید ترکیبی Shift+j رو انتخاب کنید (در ویندوز اکس پی)

sm4899
جمعه 22 آذر 1387, 23:11 عصر
با سلام
در تکست باکس متنی وارد میشود (متن فارسی )
حالا درون یک حلقه تعداد حروف تکس باکس با تابع mid تک تک حروف رو چک میکنیم
اگر حرف کوچک بود فلان کار و اگر بزرگ بود کاردیگر انجام شود
حالا مشکل اینجاست که این تابع تمام حروف کوچک رو بزرگ میکنه ؟

sm4899
یک شنبه 24 آذر 1387, 22:07 عصر
اگه ممکنه راهنمائی فرمائید

Parham.D
دوشنبه 25 آذر 1387, 07:23 صبح
دوست عزيز اگر هدف برنامه را بگي فكر ميكنم اساتيد بهتر بتوانند نظر بدهند و يا راه حل مناسبي براي شما بزارند. چرا مي‏خواهي تك تك حروف را چك كني؟ شايد با regular expression مشكل شما حل بشه! هدف برنامه چي است؟

parsehvb
دوشنبه 25 آذر 1387, 08:41 صبح
دوست عزیز شما بهتره ابتدا با تابع ContCharacters تعداد حروف رو بدست بیاری و سپس با تابع substring اون رو به تکه های مجزا تبدیل کن و بعد ....
یا اینکه با تابع text.split اون رو به آرایه ای از رشته ها تبدیل کن و بعد ......

linux
دوشنبه 25 آذر 1387, 09:09 صبح
با سلام
در تکست باکس متنی وارد میشود (متن فارسی )
حالا درون یک حلقه تعداد حروف تکس باکس با تابع mid تک تک حروف رو چک میکنیم
اگر حرف کوچک بود فلان کار و اگر بزرگ بود کاردیگر انجام شود
حالا مشکل اینجاست که این تابع تمام حروف کوچک رو بزرگ میکنه ؟
این چیزی که می گی در زمان خدابیامرز داس مرحوم بود که با کدپیج ایران سیستم این کارها را می کردند، در ویندوز وقتی شما کلمه "علی" را تایپ می کنید به صورت "ع‌ل‌ی" در فایل یا حافظه ذخیره می شود، و این کار الگوریتم bidi ویندوز هست که موقع نمایش اینها را به هم وصل می کنه در نتیجه شما وقتی تک تک حروف را به این صورت بر می گردانی حرف بزرگ را می بینید.

parsehvb
دوشنبه 25 آذر 1387, 09:36 صبح
این چیزی که می گی در زمان خدابیامرز داس مرحوم بود که با کدپیج ایران سیستم این کارها را می کردند، در ویندوز وقتی شما کلمه "علی" را تایپ می کنید به صورت "ع‌ل‌ی" در فایل یا حافظه ذخیره می شود، و این کار الگوریتم bidi ویندوز هست که موقع نمایش اینها را به هم وصل می کنه در نتیجه شما وقتی تک تک حروف را به این صورت بر می گردانی حرف بزرگ را می بینید.
دوست عزیز این که دلیل نمی شه به هرحال ممکنه در هر برنامه ای نیاز به این جور الگوریتم های قدیمی هم بشه که اصلاً قابل پیش بینی نیست در هر حال هر مشکلی راهی داره ما هم بهتره سعی کنیم کمک به دیگران رو به دیگر چیزها ترجیح دهیم

linux
دوشنبه 25 آذر 1387, 20:06 عصر
دوست عزیز این که دلیل نمی شه به هرحال ممکنه در هر برنامه ای نیاز به این جور الگوریتم های قدیمی هم بشه که اصلاً قابل پیش بینی نیست در هر حال هر مشکلی راهی داره ما هم بهتره سعی کنیم کمک به دیگران رو به دیگر چیزها ترجیح دهیم
:)) ببین 4-5 جمله سرهم کردی که من منظورت را از نوشتن اینها نفهمیدم.
چی دلیل نمی شه؟!
در جواب سوالی که کرده بود این کاربر که چرا این جوری میشه من دلیلش را گفتم.
در ضمن هر مشکلی راه "حلی" داره.
کمک به دیگران را به چه چیزهایی باید ترجیح بدیم؟
اگر جواب مساله را نمی دونی دوست من موعظه نکن ،بگرد جوابش را پیدا کن بگو تا بقیه هم استفاده کنند.

sm4899
دوشنبه 25 آذر 1387, 22:46 عصر
سلام
فکرنمیکنم بشتر از این لازم به توضیح با شه
مسئله مشخصه برگرداندن حروف کوچک یک کلمه ( درحالت فارسی نویسی )

parsehvb
سه شنبه 26 آذر 1387, 10:36 صبح
با عرض پوزش از محضر مدیران سایت ، امید وارم این تاپبک قفل نشه تا دوستمون جوابشو بگیره
این سوال اول sm4899 بود

با سلام
وقتی یک حرف از یک کلمه فارسی جدا میشه اگه حرف کوچیک باشه خودبخو د بصورت بزرگ
میشه کسی میدونه مشکل چطوری حل میشه ؟
مانند فایل ضمیمه
که بعداً به این سوال تغییر پیدا کرد


با سلام
در تکست باکس متنی وارد میشود (متن فارسی )
حالا درون یک حلقه تعداد حروف تکس باکس با تابع mid تک تک حروف رو چک میکنیم
اگر حرف کوچک بود فلان کار و اگر بزرگ بود کاردیگر انجام شود
حالا مشکل اینجاست که این تابع تمام حروف کوچک رو بزرگ میکنه ؟

حضرت آقای linux این جواب رو که برای سوال قبلی بود مرقوم فرمودند


این چیزی که می گی در زمان خدابیامرز داس مرحوم بود که با کدپیج ایران سیستم این کارها را می کردند، در ویندوز وقتی شما کلمه "علی" را تایپ می کنید به صورت "ع‌ل‌ی" در فایل یا حافظه ذخیره می شود، و این کار الگوریتم bidi ویندوز هست که موقع نمایش اینها را به هم وصل می کنه در نتیجه شما وقتی تک تک حروف را به این صورت بر می گردانی حرف بزرگ را می بینید.

و با این جواب هم خواستند نارحتی خودشون رو به ما نشون بدهند


:)) ببین 4-5 جمله سرهم کردی که من منظورت را از نوشتن اینها نفهمیدم.
چی دلیل نمی شه؟!
در جواب سوالی که کرده بود این کاربر که چرا این جوری میشه من دلیلش را گفتم.
در ضمن هر مشکلی راه "حلی" داره.
کمک به دیگران را به چه چیزهایی باید ترجیح بدیم؟
اگر جواب مساله را نمی دونی دوست من موعظه نکن ،بگرد جوابش را پیدا کن بگو تا بقیه هم استفاده کنند.
شما هم دوست عزیز بهتره اول سوال خودتون رو مشخص کنید تا این مشکلات در تاپیکه بوجود نیاید

سلام
فکرنمیکنم بشتر از این لازم به توضیح با شه
مسئله مشخصه برگرداندن حروف کوچک یک کلمه ( درحالت فارسی نویسی )

به عنوان راه حل هم فکر نمی کنم مشکل بزرگی باشه که با یکی از توابع ذکر شده کد اسکی حرف یا علامت مورد نظر رو پیدا کنی و بعد هر کاری دلت خواست انجام بدی.

linux
سه شنبه 26 آذر 1387, 17:02 عصر
با عرض پوزش از محضر مدیران سایت ، امید وارم این تاپبک قفل نشه تا دوستمون جوابشو بگیره
این سوال اول sm4899 بود

که بعداً به این سوال تغییر پیدا کرد

حضرت آقای linux این جواب رو که برای سوال قبلی بود مرقوم فرمودند
و با این جواب هم خواستند نارحتی خودشون رو به ما نشون بدهند
شما هم دوست عزیز بهتره اول سوال خودتون رو مشخص کنید تا این مشکلات در تاپیکه بوجود نیاید
به عنوان راه حل هم فکر نمی کنم مشکل بزرگی باشه که با یکی از توابع ذکر شده کد اسکی حرف یا علامت مورد نظر رو پیدا کنی و بعد هر کاری دلت خواست انجام بدی.
:)) چرا فکر می کنی ناراحت شدم. من فقط تذکر دادم.
که موعظه نکن بالا منبر هم نرو باز تکرار کردی، راه حل شما هم مثل بقیه حرفتان بی سر و ته هست. شما هنوز متوجه سوال نشدید.

کلمه علی را در نظر بگیرید ، در ویندوز و کدپیج یونی کد و 1256 به صورت ع ل ی ذخیره میشود. یعنی اگر علی را در یک آرایه از کارکتر ها بریزید عنصر اول ع و ... خواهد بود
حالا موقع نمایش این سه حرف بصورت استرینگ این وظیفه ویندوز و الگوریتم Bidi هست که این ها را با هم وصل می کند و به صورت "علی" نمایش می دهد.
من حدس می زنم دوست ما می خواهد کد پیج ها را به هم تبدیل کنه و دنبال یک همچین چیزی می گرده که مثلا بفهمه که این "ل" که در علی هست در کجای کلمه واقع شده است
اول وسط آخر .
در خطی که ما استفاده می کنیم شکل حروف به چند دسته تقسیم می شوند
1- حروفی که دو شکل دارند مثل ر،ز،ژ،و ، یا بصورت جدا یا وصل به انتهای حرف قبل
2- حروفی که سه شکل دارند مثل ط و ظ که یا در اول قرار داند یا وصل به حرف ماقبل یه بصورت جدا ( طاهر ، مطلوب، صراط)
3- حروفی که 4 شکل دارند مثل ب ، پ ه ( ب‍ ، ‍ب‍ ؛ ‍ب و یا ب)
حال شما خودتان می توانید یک الگوریتم ساده طراحی کنید که بتواند شکل حرف را جمله تعیین کند ، البته کمی سخت هست.
در اینجا http://www.unicode.org/reports/tr9/ می توانید اطلاعاتی در مورد این الگوریتم پیدا کنید

sm4899
چهارشنبه 27 آذر 1387, 00:09 صبح
سوال من عوض نشده
استادان عزیز
یک کلمه فارسی داریم مثل "علی"
حالا میخواهیم این کلمه جدا جدا و حرف به حرف نمایش داده بشه
نمونه آن هم با عکس نشون دادم
مشکل اینجاست وقتی به حروف وسط کلمه که حرف کوچک فارسی است میرسه
"لـ " اونو تبدیل بزرگ میکنه "ل"
دیگه نمیدونم چطور بگم

TomyadSoft
یک شنبه 08 دی 1387, 00:13 صبح
سوال من عوض نشده
استادان عزیز
یک کلمه فارسی داریم مثل "علی"
حالا میخواهیم این کلمه جدا جدا و حرف به حرف نمایش داده بشه
نمونه آن هم با عکس نشون دادم
مشکل اینجاست وقتی به حروف وسط کلمه که حرف کوچک فارسی است میرسه
"لـ " اونو تبدیل بزرگ میکنه "ل"
دیگه نمیدونم چطور بگم

با سلام!

من یک کد نوشتم که شاید شما رو کمک کنه.

ابتدا با یک NumericUpDown مکان حرف در جعبه متن رو مشخص می کنید (مثلا" حرف اول ، چهام یا دهم یا ...)، سپس برنامه اون حرف رو (بر اساس موقعیتش) توسط MsgBox به شما نشون می ده:




Dim mychr As String
Dim falpha as String = "ابتثجچحخدذرزژسشصضطظعغفقکگ لمنوهی"
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
NumericUpDown1.Maximum = TextBox1.TextLength
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If NumericUpDown1.Value = 0 Then Exit Sub
mychr = TextBox1.Text.Chars(NumericUpDown1.Value - 1)
Try
If mychr <> " " And mychr <> "ا" And mychr <> "آ" And mychr <> "د" And mychr <> "ذ" And mychr <> "ر" And mychr <> "ز" And mychr <> "ژ" And mychr <> "و" And TextBox1.Text.Chars(NumericUpDown1.Value) <> " " Then
If falpha.Contains(TextBox1.Text.Chars(NumericUpDown1 .Value)) = False Then Throw New ApplicationException("")
MsgBox(mychr + "ـ")
Else
MsgBox(mychr)
End If
Catch
MsgBox(mychr)
End Try
End Sub

البته باید بخش هایی رو به این کد اضافه کد تا عملکردش بهینه بشه.:لبخند:

اگر کمکی از دستم بر میاد، در خدمتم!

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

sm4899
سه شنبه 10 دی 1387, 20:37 عصر
سلام
متاسفانه هنوز جواب نگرفتم

سوال یه جور دیگه طرح کنم

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

linux
جمعه 21 فروردین 1388, 04:53 صبح
سلام
متاسفانه هنوز جواب نگرفتم

سوال یه جور دیگه طرح کنم

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

sm4899
جمعه 21 فروردین 1388, 22:06 عصر
مگر اینکه اینطور تعریف کنید که هر حرفی که به حرف قبل یا بعد یا هر دو متصل باشد حرف کوچک و در غیر اینصورت بزرگ هست.

ضمن تشکر ازدوستان که وقت میزارن

میشه بکید شما چطور تعریف میکنید( درمثال )