כותב |
|
igalep132 משתמש מתחיל
הצטרף / הצטרפה: 18 December 2007
משתמש: מנותק/ת הודעות: 13
|
נשלח בתאריך: 21 December 2007 בשעה 01:20 | | IP רשוּם
|
|
|
|
שלום, רציתי לדעת איך אני יכול לבדוק האם הקלט שלי הוא string טהור (הכוונה לאותיות ולא לספרות). אני צריך לקבל שם פרטי בtextBox ורוצה לבדוק תקינות קלט תודה מראש
|
חזרה לתחילת העמוד |
|
|
טל אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 21 December 2007 בשעה 12:55 | | IP רשוּם
|
|
|
|
אתה מעוניין לא לאפשר למשתמש לכתוב אותיות וסימנים ב-TEXTBOX, או לבדוק אם המחרוזת שהוא כבר הקליד מכילה מספרים או סימנים?
|
חזרה לתחילת העמוד |
|
|
igalep132 משתמש מתחיל
הצטרף / הצטרפה: 18 December 2007
משתמש: מנותק/ת הודעות: 13
|
נשלח בתאריך: 21 December 2007 בשעה 12:58 | | IP רשוּם
|
|
|
|
" לבדוק אם המחרוזת שהוא כבר הקליד מכילה מספרים או סימנים " ולא לאפשר לו להכניס אותם
|
חזרה לתחילת העמוד |
|
|
talikag משתמש מתחיל
הצטרף / הצטרפה: 21 December 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 3
|
נשלח בתאריך: 21 December 2007 בשעה 15:23 | | IP רשוּם
|
|
|
|
גם וגם? זה מיותר... הרי אם הוא לא יכול להכניס אותם אין בשביל מה לבדוק תקינות. עריכה: אה... אופס... בטח התכוונת ל"ולא לא להאפשר לו להכניס אותם". =\
טוב... בכל אופן... אם אתה רוצה למנוע מהמשתמש להקליד סימנים ומספרים, תעשה את זה בעזרת ה-EventHandler של האירוע KeyDown של ה-TEXTBOX. יש לך שם אפשרות לבדוק האם זו ספרה, האם זה אות, האם זה סימן וכו'. בדוק אם התו שהוכנס לא עומד בקריטריונים שלך, ואם לא הרץ את הפקודה e.Handled = true;
אם אתה רוצה לבדוק תקינות של מחרוזת קיימת, הכי קל יהיה לעשות זאת עם שימוש ב-REGEX, כלומר, REGULAR EXPRESSIONS. בראש הדף כתוב
קוד:
using Text.RegularExpressions;
|
|
|
ואת הבדיקה עשה בצורה הבאה:
קוד:
if(Regex.IsMatch(textBox1.Text, "^[\w\W]+$")) ...;
|
|
|
הבדיקה הבאה תתאים למחרוזת שמכילה אותיות בלבד, ללא רווחים, ללא סימנים וללא ספרות. כמובן שאפשר לשנות במידת הצורך, אם אתה רוצה לאפשר דברים נוספים מלבד אותיות.
אגב... טל זה אני. נרשמתי עכשיו ;)
__________________ בברכה, טל.
תכנות באינטרנט: HTML, XHTML, Javascript, CSS, PHP
פיתוח תוכנות: C#, C
|
חזרה לתחילת העמוד |
|
|
11010010110 פורומיסט על
הצטרף / הצטרפה: 23 April 2006
משתמש: מנותק/ת הודעות: 2621
|
נשלח בתאריך: 21 December 2007 בשעה 15:30 | | IP רשוּם
|
|
|
|
היי ברוך הבא
כדיי למנוע טעויות מקריות בקלט תעשה בדיקה של אותיות תוך
כדיי שהמשתמש כותב. זה מספיק חוץ מהמקרים שבמקום לכתוב
ממש הוא עושה לנתונים ctrl v וכדומה
אם את רוצה הגנה ממש תעשה בדיקה של ה string כולו באיזה
שהוא שלב (נניח כשהמשתמש עושה ok) - כי את הגנות ה on the
fly ניתן תמיד לרמות בדרך יצירתית מספיק
|
חזרה לתחילת העמוד |
|
|
igalep132 משתמש מתחיל
הצטרף / הצטרפה: 18 December 2007
משתמש: מנותק/ת הודעות: 13
|
נשלח בתאריך: 21 December 2007 בשעה 15:35 | | IP רשוּם
|
|
|
|
תודה רבה לשניכם, עוד כמה שאלות (רק התחלתי ללמוד #C לכן אני לא מכיר את כל האפשרויות גם את הטרוויאליות, אז תסלחו לי על הבורות)
א', הכיתוב "^[\w\W]+$"), מה הוא אומר, ואיך אני משנה אותה לפי הצרכים שלי ? (נניח רק אותיות וספרות עד 7...) וכל מניי אפשרויות בסגנון.
ב', איך אני עושה שבזמן הכתיבה מתבצעת הבדיקה של תקינות קלט ?
ג', ב event Handler של ה textBox לא מצאתי לבחור אופציות לבדיקה של הערך המוכנס
ושאלה נוספת, יש לי שני טפסים (בהתחלה אני פותח את הראשי ועליו את המשני), בטופס הראשי יש לי טיימר, אני רוצה שהוא יתחיל לעבוד רק כאשר נסגר הטופס המשני (לחיצה על Start) ניסיתי לעשות e.Handler לstart אבל הבעיה היא שהטיינר נמצא בטופס אחר, ואני לא מצליח לגשת עליו על מנת לעפילו. מה אני יכול לעשות ?
תדוה רבה
|
חזרה לתחילת העמוד |
|
|
talikag משתמש מתחיל
הצטרף / הצטרפה: 21 December 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 3
|
נשלח בתאריך: 21 December 2007 בשעה 15:47 | | IP רשוּם
|
|
|
|
א': הכיתוב "^[\w\W]+$" יתאים לכל מחרוזת שמכילה רק אותיות (גדולות וקטנות), ללא רווחים, מספרים, וסימנים למיניהם. אם אני אסביר מדוע, אתה בטח לא תבין, וגם אם כן, זה לא ייתן כלום, כי בפעם הבאה שתרצה לבדוק מחרוזת תחת תנאים אחרים לא תצליח. לכן אני מציע שתלמד על ביטויים רגולריים או Regular Expressions (חיפוש פשוט בגוגל ייתן לך קישורים לאתרים רלוונטים). אני אישית משתמש בזה הרבה. זה מאד קל ופשוט לשימוש, ופותר המון בעיות של ניתוח מחרוזות.
ב': את זה כתבתי לך בהודעה הקודמת. אמנם את הקוד לא כתבתי, אבל הסברתי איך זה מתבצע באופן מילולי.
"אם אתה רוצה למנוע מהמשתמש להקליד סימנים ומספרים, תעשה את זה בעזרת ה-EventHandler של האירוע KeyDown של ה-TEXTBOX. יש לך שם אפשרות לבדוק האם זו ספרה, האם זה אות, האם זה סימן וכו'. בדוק אם התו שהוכנס לא עומד בקריטריונים שלך, ואם לא הרץ את הפקודה e.Handled = true;"
קוד שיתאים במקרה הזה:
קוד:
if ((int)e.KeyValue<65 || ((int)e.KeyValue>90 && (int)e.KeyValue<97) || (int)e.KeyValue>122)
e.Handled = true;
|
|
|
בקוד הנ"ל בדקתי אם הערך ASCII של התו שנקלט הוא אינו אות (שונה מ-a-zA-Z), ואם התנאי מתקיים, הפקודה e.Handled = true; תרוץ, כלומר, התו לא יוצג בתיבת הטקסט.
__________________ בברכה, טל.
תכנות באינטרנט: HTML, XHTML, Javascript, CSS, PHP
פיתוח תוכנות: C#, C
|
חזרה לתחילת העמוד |
|
|
igalep132 משתמש מתחיל
הצטרף / הצטרפה: 18 December 2007
משתמש: מנותק/ת הודעות: 13
|
נשלח בתאריך: 21 December 2007 בשעה 15:59 | | IP רשוּם
|
|
|
|
igalep132 כתב:
ושאלה נוספת, יש לי שני טפסים (בהתחלה אני פותח את הראשי ועליו את המשני), בטופס הראשי יש לי טיימר, אני רוצה שהוא יתחיל לעבוד רק כאשר נסגר הטופס המשני (לחיצה על Start) ניסיתי לעשות e.Handler לstart אבל הבעיה היא שהטיינר נמצא בטופס אחר, ואני לא מצליח לגשת עליו על מנת לעפילו. מה אני יכול לעשות ?
|
|
|
ניסיתי להפעיל את הטיימר ע"י DialogResult אבל משום מה זה לא עובד, במקום OK שאני אמור להחזיר מהטופס המשני, מוחזר Cancel
|
חזרה לתחילת העמוד |
|
|
אביב אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 22 January 2008 בשעה 19:15 | | IP רשוּם
|
|
|
|
if(Regex.IsMatch(textBox1.Text, "^[\w\W]+$")) ...;
רושם לי ככה: Error 1 Unrecognized escape sequence
מה לעשות?
בטוח שזה W וw? המשמעות שלהם זה רווח?
תודה מראש
|
חזרה לתחילת העמוד |
|
|
^@#% אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 22 January 2008 בשעה 19:55 | | IP רשוּם
|
|
|
|
הצעה פשוטה שלי : לפני הפעולה שאת\ה רוצה לעשות עם השם אז תבדוק את השם כך : תעבור על כול התווים במחרוזת ותבדוק אם הם אותיות באנגלית עושים את זה כך :
קוד:
for (int i=0;i<myTextBox.Length;i++) { if ((myTextBox[i]<'a')||(myTextBox[i]>'z') { //do something } }
|
|
|
|
חזרה לתחילת העמוד |
|
|