PDA

نسخه کامل مشاهده نسخه کامل : تغيير كاراكترهاي كدهاي اسكي؟؟



rouhallah
04-10-2006, 14:53
بنام خدا
با سلام
چگونه ميتوان كاراكترهايي كه به كدهاي اسكي 1 تا 128 اختصاص داده شده را جايگزين كاركتري ديگر كرد
البته در زبان c يا در زبان اسمبلي
:rolleye:

someone
05-10-2006, 13:07
سلام.
اگه برنامه تون Win32 هست ميتونيد از توابع Hook براي اين كار استفاده كنيد.
اگه برنامتون تحت Dos هست ميتونيد از keyboard interrupts كنيد.
همچنين ميتونيد تابعي براي اين كار بنويسيد كه مثلا اگه A دريافت شد B رو return كنه.
اگه مشكلي پيش اومد اطلاع بديد.

rouhallah
06-10-2006, 12:46
با سلام دوباره
فكر كنم منظورم خوب نرسوندم يا جواب شما رو خوب نفهميدم
يك مثال بزنم تا موضوع رو روشنتر كنم
اگه با فارسي ساز سپند كار كرده باشيد كه محيط داس را فارسي ميكنه
شايد ديده باشيد حتي برنامه اي رو كه قبلا نيز نوشته ايد وقتي اين فارسي ساز در حال اجرا است باز ميكنيد اعدادي كه قبلا تو برنامتون انگليسي بوده حالا فارسي شده حتي تو خود محيط اديتور سي نيز هر عددي هرجا باشه فارسي شده
و من هم ميخوام بدونم اين كارو چطور ميشه كرد نه فقط براي عدد بلكه براي حروف ها نيز لازم دارم
بگذريم كه شايد با اينكار نرم افزار قاطي كنه وكاراكترهاي فارسي بي معني رو نشون بده
ولي من همينشو ميخوام
اگه راهي بلديد لطفا همرا يك مثال كوچيك باشه مثلا اگه تابعي وجود داره اون تابع و طرز استفادشو بيان كنيد بي زحمت
با تشكر

Iran-PC
06-10-2006, 15:54
سلام.
اینی که شما میگید تغیر فونته.
برنامه های فارسی ساز شکل کاراکتر های بعد از 128 رو فارسی میکنه.
اعداد هم که از 48 شروع میشه رو هم فارسی میکنه (بعضیهاشون).
برای اینکار میتونید از وقفه استفاده کنید.
(شمارشو بگردم پیدا کنم برات مینویسم).
در ضمن شما باید فونت هم داشته باشید. (اونم چند تا دارم بعد برات میفرستم)
بعد این فارسی سازها 2 نوع هستند.
نوع اول اونایی که توی حافظه مقیم نمیشند و پس از فارسی کردن فونت اجرای برنامه به اتمام میرسه.
نوع دوم اونهایی که در حافظه مقیم میشند و بعد از اتمام فارسی سازی در حافظه میمونند و بعضی هاشون با یکسری کلید دوباره فعال میشند.
فرق این دو نوع هم اینه که توی نوع اول اگر Mode صفحه نمایش عوض بشه فونتها به شکل اول برمیگرده اما نوع دومی ها میتونند با مقیم شدن در حافظه پس از تغیر Mode صفحه نمایش مجددا فونت فارسی رو بارگزاری کنند.

someone
07-10-2006, 00:57
دوباره سلام.
توضيحات دوستمون "Iran-PC" كامل بود.من فقط اضافه كنم وقفه ي keyboard در DOS برابر 21H و
در BIOS برابر 16H هست. در ضمن بر خلاف زبان هاي ديگه فارسي نويسي كار راحتي نيست.
توجه داشته باشيد كه در فارسي حرف ها بستگي به موقعيت شون در كلمه دارند.
مثلا حرف "ش" بنا به كاربردش در اول يا وسط يا آخر و همچنين به تنهايي در يك كلمه داراي 4 حالت هست.
همونطور كه گفتم اگه برنامتون Win32 هست بايد از Hook Functions استفاده كنيد.
چون اجازه دسترسي مستقيم به وقفه ها رو نداريد.در غير اين صورت ميتونيد مستقيما با وقفه ها كار كنيد.

rouhallah
07-10-2006, 22:09
با سلام و تشكر از دوستان خوبم someone و Iran-pc من به خاطر اين فكر كردم در فارسي ساز سپند اعداد فارسي شده روي كدهاي پايين 128 كار شده چون وقتي از كاراكترهايي كه در نام متغيرها مجاز نيست استفاده كني كاراكترها قرمز ديده مي شوند ولي كاراكترهاي مجاز سبز رنگ و اعداد مجاز سفيد رنگ دليل و وقتي اعداد فارسي استفاده كردم ديدم آنها هم مجاز اندمنظور من هم از اين پرسش استفاده از الفباي فارسي در نام متغيرها بوده
انشا الله مشكل من حل ميشود
يه سوال ديگه كه داشتم از جوابهاي شما به ذهنم رسيد و اون برنامه هاي win32 هست
سوال من اين است چطور برنامه اي از نوع win32 بنويسم در مورد Hook Functions ها توضيح دهيد آيا با همين ++c ميشود برنامه از نوع win32 نوشت با تشكر

Iran-PC
08-10-2006, 20:04
ببینید دوست عزیز توی داس شما میتونید شکل کاراکتر رو عوض کنید. نه کد اسکی رو.
البته تعداد کاراکتر غیر مجاز برای انتخاب فایل محدوده و شما میتونید از بقیه کاراکترها به عنوان اسم فایل استفاده کنید.
اینها در مورد داس و برنامه نویسی (زبانهای برنامه نویسی )16 بیتی هست.
در ویندوز و برنامه نویسی 32 بیتی قضیه کاملا متفاوته.
برای نوشتن برنامه های 32 بیتی تحت ویندوز شما باید از نسخه های 32 بیتی استفاده کنید.
مانند زبانهای ویژوال.
برنامه نویسی برای هوک ها هم کار تازه کار ها نیست.
تا وارد نشدید در این زمینه کاری انجام ندید.
چون مجبور میشید راه به راه سیستم رو ریست کنید.
البته برای برنامه های خودتون که میخواید از فارسی نویسی استفاده کنید نیازی به هوک ندارید و با توابعی مانند Keypressed و keydown و غیره میتونید کلیدهارو به معادل فارسی اونها تغیر دهید.
توی ویندوز وظیفه انتخاب شکل صحیح حروف فارسی به عهده خود ویندوزه.