PDA

View Full Version : مبتدی: تشخیص فشرده شدن یک دکمه از صفحه کلید



sarakh
جمعه 30 اردیبهشت 1390, 16:00 عصر
سلام
یه برنامه با turbo c می خوام بنویسم که وقتی یه دکمه مثلا حرف N فشرده شد یه کاری انجام بده.
لطفا روش تشخیص دکمه ها و کار کردن با دکمه هارو توضیح بدین.
ممنون.

Arcsinos
جمعه 30 اردیبهشت 1390, 18:25 عصر
خب میتونید از دستور cin>>ch استفاده کنید و بعد اینتر را بزنید اگه n بود بیاد کارتون رو انجام بدید .
یا اگه میخاید بلا فاصله بعد از فشردن کلید n کارتون انجام بشه بدون نیاز به اینتر ، میتونید یا از تابع getch() or getche استفاده کنید مثلا بنویسید ch=getche فرق این تابع با تابع getch در اینه که تابع getch کاراکتر ورودی رو نشون میده ولی تابع getch اونو نشون نمیده .
این دو تابع تو هدر conio.h هستن .
نمیدونم منظورتون این بود یا یه چیز دیگه من تا این حد بلد بودم
موفق باشید

code_baz
شنبه 31 اردیبهشت 1390, 12:05 عصر
من اینو تو codeblocks میزنم ولی برای کاراکتر ها کار نمیکنه:
error: ISO C++ forbids comparison between pointer and integer
که اولا باید از اشاره گر استفاده کرد:
char a;
char *n=&a;
cin>>n;
if ((n=="g")) cout<<"you entered "<<n;

دوما تو کامپایلر من (gcc) توابع getch() و getche() برای int تعریف شده و برای char خطا میده من از همون cin استفاده کردم
آیا در borland هم اینجوریه؟

shahmohammadi
شنبه 31 اردیبهشت 1390, 12:16 عصر
سلام. در دستور شرطي به جاي n==g بايد عبارت زير رو بنويسيد:
if ((*n=='g')) cout<<"you entered "<<n;
چون با مختويات اشاره گر كار داريم.

shahmohammadi
شنبه 31 اردیبهشت 1390, 12:22 عصر
در ضمن اين دوتابع هميشه به صورت زير تعريف مي شن. و خروجي شون به صورت اينت هست و ورودي ندارند و منتظر فشردن كليد مي شند:
int getch(void);

sarakh
شنبه 31 اردیبهشت 1390, 18:23 عصر
خوب وقتی خروجی تابع getche از نوع int هست چه طور بفهمم کدوم دکمه فشار داده شده؟؟؟؟؟؟؟؟؟؟؟
:خجالت:

shahmohammadi
شنبه 31 اردیبهشت 1390, 20:30 عصر
به صورت زير:
char ch;
ch=getch();
cout<<ch;

اين دو تابع درسته كه خروجي شون اينته ولي كاراكتري رو كه از صفصه كليد گرفتند رو بر ميگردونند.

mar mar mari
جمعه 07 تیر 1392, 12:49 عصر
سلام
خسته نباشید
یه مشکل دارم میخواستم با فشردن یک کلید فرم در حال اجرام داخل adobe reader باز بشه.
لطف می کنید کامل توضیح بدید:خجالت:
سایت های دیگه پاس ام میدادن به سایت های انگلیسی...:گریه: