ABA


"איך אני קולט בפסקל שהמשתמש לוחץ על החיצים?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7896 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7896
Buzzy

   21:00   04.02.04   
אל הפורום  
  איך אני קולט בפסקל שהמשתמש לוחץ על החיצים?  
 
   יש לי תוכנה ואני רוצה שהמשתמש יוכל ללחוץ על החיצים בשביל לזוז.

איך אני קולט לחיצה על מקש החיצים?
כי אין להם ORD...

תודה לעוזרים!!


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  בטח שיש להם ORD E-do  05.02.04 19:24 1
  מקשי חצים מייצרים זוג תווי ASCII dryice 05.02.04 23:38 2
     בפסקל הזיהוי מתבצע לפי תו ASCII בודד E-do  06.02.04 15:18 3
  ראשית, תודה לכולם על ההסברים. Buzzy 06.02.04 19:06 4
     בדיוק כמו שdryice אמר E-do  06.02.04 22:59 5
     OK, מצאתי את התוכנית E-do  06.02.04 23:23 6
         הקוד הנ''ל קצת שגוי dryice 07.02.04 13:08 7
             OK, עכשיו הבנתי בעצם איך זה עובד.. E-do  07.02.04 15:08 8
  תודה רבה! Buzzy 07.02.04 15:21 9
  זה אכן עובד... Buzzy 08.02.04 22:28 10
     קטע הקוד של Dryice עושה את זה E-do  09.02.04 10:17 11
     לא מדוייק... Buzzy 09.02.04 22:21 12

       
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   19:24   05.02.04   
אל הפורום  
  1. בטח שיש להם ORD  
בתגובה להודעה מספר 0
 
   תבנה תוכנית פשוטה שאתה מקיש על מקש, וזה כותב לך על המסך את הקוד ASCII שלו, אתה תראה שגם לחיצים יש.


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   23:38   05.02.04   
אל הפורום  
  2. מקשי חצים מייצרים זוג תווי ASCII  
בתגובה להודעה מספר 0
 
   רוב המקשים אתה לוחץ עליהם ונכנס לחוצץ תו ASCII אחד שאתה
יכול לקרוא לגבי חצים ועוד כמה מקשים מיוחדים
כל לחיצה מייצרת זוג תווים הראשון שבהם הוא 0, והשני תלוי
במקש אתה צריך לזהות את הרצף של שני המקשים, כאשר נקלט 0
אתה צריך לזהות שהמקש הבא קשור אליו ויש לפעמנכם כזוג.

DRYICE

נ.ב
במקלדות חדשות עם יותר מ101 מקשים יש גם מקשים המייצרים יותר
מ2 תווי ASCII.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   15:18   06.02.04   
אל הפורום  
  3. בפסקל הזיהוי מתבצע לפי תו ASCII בודד  
בתגובה להודעה מספר 2
 
   מזמן שכבר לא תכנתתי והתעסקתי עם זה, אבל הבדיקה נעשתה ע"י readkey לתוך משתנה char (כלומר תו בודד) והשוואה שלו למספר המבוקש שמייצג את החץ.


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Buzzy

   19:06   06.02.04   
אל הפורום  
  4. ראשית, תודה לכולם על ההסברים.  
בתגובה להודעה מספר 0
 
   אבל אני לא מצליח לקלוט ב READKEY...

בניתי תוכנה שכאשר אני לוחץ על מקש הוא יראה לי את ה ASCCI שלו אבל כשאני
לוחץ על חץ כלשהו הוא מציג לי 0.

אז איך בכל זאת אני יכול לקלוט חץ ואחרי שאני קולט לבדוק:
אם הוא ימינה, הדפס "right"
אם הוא שמאלה, הדפס "LEFT"

וכו'?...

מישהו יכול לבנות תוכנה של שתי דקות רק כדי שאני יראה איך ממשים את זה?
כי ת'עיקרון גם אני יודע אבל הוא לא עובד לי...

תודה לכולם !


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   22:59   06.02.04   
אל הפורום  
  5. בדיוק כמו שdryice אמר  
בתגובה להודעה מספר 4
 
   מוזר, פעם (לפני איזה 5 שנים) בניתי תוכנית וזה עבד מצויין.
אולי פעם זה היה אחרת...
אני יחפש אותה, ואם אני אמצא מעניין לבדוק אם היא עובדת או לא.


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   23:23   06.02.04   
אל הפורום  
  6. OK, מצאתי את התוכנית  
בתגובה להודעה מספר 4
 
   ערכתי לאחרונה בתאריך 06.02.04 בשעה 23:23 בברכה, E-do
 
ולקח לי כמה דקות טובות להבין למה התוכנית שבניתי עכשיו (שהיא מן הסתם כמו שאתה עשית) לא עובדת
מצורף הקטע הרלוונטי: (ככה זה עובד, אחרת זה לא עובד אל תשאל אותי למה)

var
ch:string;
begin
repeat
ch:=readkey;
if ch=#72 then writeln ('up');
until ch=#13 {enter, can be replaced by any other key}
end.
#72 = Up
#80 = Down
#75 = Left
#77 = Right


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   13:08   07.02.04   
אל הפורום  
  7. הקוד הנ''ל קצת שגוי  
בתגובה להודעה מספר 6
 
   הוא אומנם יזהה לחיצה על החצים, אבל יש כמה אותיות
שהתוכנית הנ"ל תזהה גם כאילו הם לחיצה על החצים.
האותיות HPKM אם זכרוני אינו מטעני יזוהוא בתוכנית שלך כאילו
הם לחיצה על החצים, משום של בדקת שלפניהם היה 0.

לחילופין אפשר לכתוב משהוא בסגנון הזה(לא בדוק):

repeat
ch:=readkey;
if (ch=#0) then begin
ch=readkey;
if ch=#72 then writeln ('up');
end;
until ch=#13

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   15:08   07.02.04   
אל הפורום  
  8. OK, עכשיו הבנתי בעצם איך זה עובד..  
בתגובה להודעה מספר 7
 
   תודה רבה


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Buzzy

   15:21   07.02.04   
אל הפורום  
  9. תודה רבה!  
בתגובה להודעה מספר 0
 
   אני אנסה ויודיע לכם אם זה עבד לי...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Buzzy

   22:28   08.02.04   
אל הפורום  
  10. זה אכן עובד...  
בתגובה להודעה מספר 0
 
   למרות שאני עדיין לא הפנתמי כל כך איך זה עובד ומה התהליך
שהמחשב מבצע בעת עיבוד התוכנה הנ"ל...

עכשיו כשהצלחתי לקלוט את החיצים, איך אני יכול לזהות אם
אכן התו שנקלט הוא אות (מארבעת האותיות שציין DRYICE) או
אם הוא חץ?

אני חשבתי על דרך של הוספת משתנה בוליאני שישנה את ערכו
ל"אמת" לאחר הבדיקה שהתו הראשון שנקלט הוא 0, וכך אני
יוכל לבדוק בהמשך התוכנית בעזרת המשתנה הבוליאני אם התו
שנקלט הוא מספר או חץ.

יש אולי דרך אחרת, יעילה יותר או פשוטה יותר?


תודה לכם !!!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   10:17   09.02.04   
אל הפורום  
  11. קטע הקוד של Dryice עושה את זה  
בתגובה להודעה מספר 10
 
   לדעתי זה הכי פשוט שיש.


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Buzzy

   22:21   09.02.04   
אל הפורום  
  12. לא מדוייק...  
בתגובה להודעה מספר 10
 
   כי אם לאחר מכן, בשלב מאוחר יותר של התוכנית, אינ ארצה לבדוק
מה התו שנקלט אני אצטרך לדעת אם נקלת החץ למעלה(UP) או נקלט
"H"

אני יודע שאפשר לעשות זאת עם משתנה בוליאני כמו שכתבתי לעיל
אבל אני שואל אם אפשר לעשות את הבדיקה בדרך יותר פשוטה...

נ.ב.
הבדיקה שלי היא כמה שורות קוד אחרי הקליטה. כלומר, אני לא
יכול לעשות את הבדיקה בתוך ההתניה של if ch=#0 then אלא
כמה שורות אחרי כן. אחרי הסיום של ההתניה!


תודה!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net