PDA

View Full Version : سوال: مشکل با "\"



محمدامین شریفی
چهارشنبه 06 آذر 1387, 11:28 صبح
هنگامی که میخواهم درون کدهای #c کلمه "\" را وارد کنم visual studio ایراد میگیرد،حتی اگر این متن درون string باشد.تازه وقتی هم که میخواهم به این صورت
Convert.ToChar(220).ToString() کلمه را وارد کنم این کلمه را میدهد
Üمیخواهم بدانم شما با این کلمه چجور کار میکنید؟

s_ahmadneya
چهارشنبه 06 آذر 1387, 11:46 صبح
هنگامی که میخواهم درون کدهای #c کلمه "\" را وارد کنم visual studio ایراد میگیرد،حتی اگر این متن درون string باشد.تازه وقتی هم که میخواهم به این صورت
Convert.ToChar(220).ToString() کلمه را وارد کنم این کلمه را میدهد
Üمیخواهم بدانم شما با این کلمه چجور کار میکنید؟
با سلام اگه اشتباه نکنم مشکلت بصورت زیر حل می شود

string strPath =@"c:\smail\test.txt"


یعنی با @

mehdi.mousavi
چهارشنبه 06 آذر 1387, 11:48 صبح
هنگامی که میخواهم درون کدهای #c کلمه "\" را وارد کنم visual studio ایراد میگیرد،حتی اگر این متن درون string باشد.تازه وقتی هم که میخواهم به این صورت
Convert.ToChar(220).ToString() کلمه را وارد کنم این کلمه را میدهد
Üمیخواهم بدانم شما با این کلمه چجور کار میکنید؟

سلام.
اگر منظورتون آوردن \ وسط یک String هستش، باید دو بار تکرارش کنید:


String s = "my \\whatever\\ string!";البته در C# میتونید اینکارو هم انجام بدید:


String s = @"my \whatever\ string!";

محمدامین شریفی
چهارشنبه 06 آذر 1387, 12:35 عصر
آقایان واقعا دستتون درد نکنه ،حالا میدونید کد "\" چی هست؟
آیا این کد ASCII هست؟
---------
چو ایران نباشد تن من مباد:لبخندساده:(خیلی خوشحال شدم رفیق وطن دوست)

mehdi.mousavi
چهارشنبه 06 آذر 1387, 14:29 عصر
آقایان واقعا دستتون درد نکنه ،حالا میدونید کد "\" چی هست؟
آیا این کد ASCII هست؟

سلام.
کد این کاراکتر (یعنی Backslash) عدد 5C (یا 92) هستش. و بله. ASCII هستش.

محمدامین شریفی
چهارشنبه 06 آذر 1387, 14:31 عصر
کد این کاراکتر (یعنی Backslash) عدد 5C (یا 92) هستش. و بله. ASCII هستش.
پس چرا من کدش رو 220 میبینم.
یک پرسش دیگر اینکه کد عدد فارسی با انگلیسی یکی هست.در حقیقت کد صفحه کلید را به ما نشان میدهد.تکلیف بقیه encoding ها چگونه است.چگونه میشود کد آنها را پیدا کرد؟(ببخشید اگر از موضوع دور شدم)

afsharm
چهارشنبه 06 آذر 1387, 18:18 عصر
پس چرا من کدش رو 220 میبینم.
یک پرسش دیگر اینکه کد عدد فارسی با انگلیسی یکی هست.در حقیقت کد صفحه کلید را به ما نشان میدهد.تکلیف بقیه encoding ها چگونه است.چگونه میشود کد آنها را پیدا کرد؟(ببخشید اگر از موضوع دور شدم)
کد اعداد انگلیسی و فارسی یکی نیست. کد اعداد انگلیسی همان‌هاست که در اسکی آمده و زیر ۱۲۷ است ولی کد اعداد فارسی صرفا در یونیکد پیاده سازی شده است و حتی با اعداد عربی هم فرق دارند. به استاندارد ۶۲۱۹ موسسه استاندارد (http://downloads.sourceforge.net/farsitools/finalversion.pdf?modtime=1022009400&big_mirror=0) مراجعه کنید. مطمئنا خیلی چیزها دستیگرتان خواهد شد.

afsharm
چهارشنبه 06 آذر 1387, 18:19 عصر
پ‍. ن‍.: به این ویندوز هم اعتماد نکنید! چون با کمک Regional Settings خیلی از چیزها را از حالت استانداردش خارج کرده است!

mehdi.mousavi
پنج شنبه 07 آذر 1387, 10:26 صبح
پس چرا من کدش رو 220 میبینم. یک پرسش دیگر اینکه کد عدد فارسی با انگلیسی یکی هست.

سلام.
ببینید، این کاملا بستگی داره به Context ای که داریم در مورد حرف میزنیم. شما میتونید اعداد رو با استفاده از کد 660-669 در فایل (بعنوان مثال) نگهداری کنید، یا میتونید از کد های 30-39 استفاده کنید. (همه اعداد رو به هگزادسیمال نوشتم). وقتی از کدهای 660-669 استفاده میکنید، نباید انتظار داشته باشید که بشه رو اونها عملیات ریاضی انجام داد. چون 661+661 میشه رشته 11 نه عدد 2. پس باید از هر Encoding ای که استفاده میکنید، در نهایت اعداد رو در بازه 30-39 قرار بدید و سپس میتونید انتظار داشته باشید که عملیات ریاضی روی اونها انجام پذیر باشه. مثلا برای مثال قبلی، باید ابتدا عدد 630 رو از کد مورد نظر کم کنیم، (تا در بازه اعداد ASCII بیفته)، و سپس عملیات مورد نظر رو روش انجام بدیم: 660-630=30

حالا میتونیم رو اون 30 عملیات ریاضی انجام بدیم. در واقع نگهداری اطلاعات یک مقوله هستش، و نمایش اون یک مقوله دیگه. بعنوان مثال، میشه عددی رو که با کد 30 در فایل نگهداری شده رو، روی صفحه و بهنگام نمایش، بصورت کاراکتر با کد 660 (یا همون صفر فارسی) دید. برای اینکار هم روشهای متفاوتی وجود داره، که یکیش، دستکاری در پنجره Regional & Language Options سیستم عامل هست.

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

محمدامین شریفی
جمعه 08 آذر 1387, 04:50 صبح
سلام.
پاورقی: من هیچ ایده ای ندارم که شما چطور به عدد 220 رسیدید. البته حدس میزنم که کد عدد رو نگاه نکردید، بلکه از روی شکل اون کاراکتر، یعنی Ü، به این نتیجه رسیدید که کد این کاراکتر 220 هستش. (البته این فقط یک حدس هستش). خوشحال میشم اگه بتونید با یک مثال عملی، بهم نشون بدید که چطوری به عدد 220 رسیدید.
سلام دوست عزیز
همانطور که میدانید در همه زبان ها میشود با نوشتن عدد در int آنرا به حروف مشابه به char تبدیل کرد.من در #C هم همینکار را کردم



int a= Convert.ToInt("\");
Txtcnv =Convert.ToChar(a).ToString();

mehdi.mousavi
شنبه 09 آذر 1387, 11:16 صبح
سلام دوست عزیز
همانطور که میدانید در همه زبان ها میشود با نوشتن عدد در int آنرا به حروف مشابه به char تبدیل کرد.من در #C هم همینکار را کردم



int a= Convert.ToInt("\");
Txtcnv =Convert.ToChar(a).ToString();


سلام.
این کدی که نوشتید رو چطور کامپایل کردید؟

1. کلاس Convert مگه متودی به اسم ToInt داره؟ ToInt32 و ToInt64 هست، اما ToInt نه.
2. چون \ رو یکبار نوشتید، اصلا Syntax رو باید ایراد بگیره و کامپایل نشه!
3. برای بدست آوردن کد ASCII یک کاراکتر، چرا اونو به صورت String به تابع ToInt32 میدید؟ درستش اینه که بنویسید:


Convert.ToInt32('\\');که در اینصورت عدد 92 رو خواهید گرفت.

4. گذشته از اینا، میتونید براحتی برای بدست آوردن کد ASCII یک کاراکتر، اینطور عمل کنید:


Int32 a = (Int32)'\\';و البته برای برگردوندنش به یک کاراکتر، میتونید بنویسید:


Char b = (Char)a;در همه موارد هم به عدد 92 (دسیمال) یا همون کاراکتر \ خواهید رسید.

محمدامین شریفی
شنبه 09 آذر 1387, 12:54 عصر
درست میگید.من همینجوری اون کد را نوشتم،که منظورم int32 بود.
در ضمن من عدد را از textbox میگرفتم و در رویداد onchange نوشته بودم،و با هر بار فشردن عدد پاک میشد.پس در حقیقت من کد "\" را میگرفتم نه "\\".
ممنون از راهنمایی شما