עבור לתוכן
  • צור חשבון

קוד לפתיחת קובץ ב#c.


eido300

Recommended Posts

א. כן יצרתי אובייקט alramclock בשורה הראשונה בקוד השני.

ב. ראיתי את זה כאן (עשיתי כמו שאמרת חיפשתי #list<t> c וזה מה שיצא).

ג.ניסיתי להעביר אותו בכל מיני צורות כמו שבדרך כלל מעבירים כאלה דברים, זה רק אחד מהניסיונות, וזה מה שפחות או יותר עושים בקישור שצירפתי.

ד. וכן בהחלט לפעמים אני עובד בניסוי וטעיה, מה לעשות ככה מתאמנים, וכשבסוף מצליחים לעשות את זה כמו שצריך הכל ברור, יותר טוב מאשר אפשר להבין באתרים האלה (במיוחד שהכל באנגלית כמו שם), אני לא אומר שאני לא מחפש הסברים, אני מחפש אבל לא תמיד זה ברור ולא תמיד יש את המקרה שאתה מתעסק איתו (כמו במקרה הזה), אז אני משתמש בניסוי וטעיה אם מצליח טוב ואם לא אז הופכים את הרשת שוב.

נ.ב. קראתי לזה demo כי למצוא לכל דבר שם חדש זה עבודה מעצבנת, אז כל עוד זה לא חלק מהתרגיל אני קורא לו מה שעולה בראש, הפעם demo אבל כשזה יהיה חלק מהתרגיל ברור שאני לא אקרא לו כך (כבר דיברנו על זה, לא?).

קישור לתוכן
שתף באתרים אחרים

  • תגובות 101
  • נוצר
  • תגובה אחרונה

זה הקוד שהיית אמור לכתוב:


List<AlarmClock> list = new List<AlarmClock>();

AlarmClock ac = new AlarmClock();
ac.time = ...;
ac.file_name = ...;
// עוד אתחולים...

list.Add(ac);

כיוון שהתבנית הזו של ליצור אובייקט ומיד אחרי זה לשים בו ערכים נפוצה, יצרו לזה תחביר מיוחד, ככה שאתה יכול לכתוב:


AlarmClock ac = new AlarmClock() {
time = ...;
file_name = ...;
// עוד אתחולים...
};

כאן יש עוד הסבר ודוגמאות.

היתרון של בנאי הוא שהוא מכריח אותך להעביר את כל הפרמטרים. בלי בנאי, אתה יכול ליצור אובייקט AlarmClock ואז לשכוח לשים ערכים בכל השדות (נגיד, בטעות לא לשים ערך בשדה time). אם יש למחלקה בנאי, אז כשאתה יוצר את המחלקה אתה חייב להעביר לה את כל הפרמטרים שהבנאי דורש, ואם תשכח אחד מהם אז התכנית לא תתקמפל.

קישור לתוכן
שתף באתרים אחרים

זה הקוד שהיית אמור לכתוב:

קוד:



AlarmClock ac = new AlarmClock();
ac.time = ...;
ac.file_name = ...;
// עוד אתחולים...

list.Add(ac);
List<AlarmClock> list = new List<AlarmClock>();

ניסיתי את זה, וזה לא עובד.(זה היה אחד מהניסיונות...) עריכה: טעות שלי, זה כן עובד.

כיוון שהתבנית הזו של ליצור אובייקט ומיד אחרי זה לשים בו ערכים נפוצה, יצרו לזה תחביר מיוחד, ככה שאתה יכול לכתוב:

קוד:


time = ...;
file_name = ...;
// עוד אתחולים...
};
AlarmClock ac = new AlarmClock() {

כאן

יש עוד הסבר ודוגמאות.

היתרון של בנאי הוא שהוא מכריח אותך להעביר את כל הפרמטרים. בלי בנאי, אתה יכול ליצור אובייקט AlarmClock ואז לשכוח לשים ערכים בכל השדות (נגיד, בטעות לא לשים ערך בשדה time). אם יש למחלקה בנאי, אז כשאתה יוצר את המחלקה אתה חייב להעביר לה את כל הפרמטרים שהבנאי דורש, ואם תשכח אחד מהם אז התכנית לא תתקמפל.

אוקיי, תודה.

אוקיי, זה מה שיצא:


[LEFT]void add()
{
List<AlramClock> list = new List<AlramClock>();
list.Add(new AlramClock {file_name1=file_name, file_safe_name1=file_safe_name, time1=time,save_alram1=save_alram});
}[/LEFT]


קישור לתוכן
שתף באתרים אחרים

אוקיי יש לי כמה בעיות חדשות.

1.עשיתי כמה טפסים: אחד בשביל המסך פתיחה שבו מופיעה השעה, רשימת ההתראות, לחצנים לשמירת התראה חדשה ולמחיקת התראה. ובשני יש את מה שכתבנו עד עכשיו (מראה את השעה, מקום לבחור שיר ,תיבה להכנסת שעה, ולחצן לשמירת ההתראה).

הבעיות הם כאלה:

1- איך אני כותב לו שיפעיל את הטופס השני כל פעם שלוחצים על הכפתור שאחראי על הפתיחה שלו (הוא כותב שא"א להפעיל דבר שסגרתי כבר).

2- אני צריך למצוא דרך שאיתה אני אוכל למחוק את ההתראה. (שזה מסובך, כי איך אני יכול למחוק את ההתראה שאני רוצה למחוק ולא התראה אחרת, אני מכיר את השיטה remove אבל איך אני גורם לה למחוק את מה שאני רוצה? אפשרי ליצור תיבה שבה יופיעו ההתראות וע"י לחיצה עליהם/סימון שלהם זה יבחר את ה"תא" שלהם במערך?)

קישור לתוכן
שתף באתרים אחרים

1. לא הבנתי בדיוק מה אתה רוצה לעשות. באופן כללי, כל פעם שאתה רוצה להציג את הטופס השני, מומלץ ליצור מופע חדש שלו (אל תשמור אותו כאיבר בטופס הראשון). אפילו יותר מזה, מומלץ להציג אותו באמצעות ShowDialog ולא באמצעות Show.

2. בגלל זה קוראים את התיעוד של המחלקות. תקרא על List.RemoveAt.

קישור לתוכן
שתף באתרים אחרים

1. תודה

2. לזה התכוונתי.

3. יש לי בעיה אני לא מצליח להדפיס את ההתראות, תמיד הוא מדפיס לי רק את ההתראה האחרונה.

זה הקוד:


[LEFT]for (int a = 0; a != ffs.list.Count; a++)
{
AlramList.Text = ffs.list[a].time1.ToString("HH:mm")+"\r\n";


}[/LEFT]


איפה הטעות שלי?

קישור לתוכן
שתף באתרים אחרים

כן, בדיוק התכוונתי לכתוב לך ששכחתי לכתוב לו שיכתוב גם את מה שהיה כתוב מקודם,אבל לא הייתי ליד המחשב אז הקדמת אותי.

[LEFT] AlramList.Text = "";
for (int a = 0; a != ffs.list.Count; a++)
{
AlramList.Text += ffs.list[a].time1.ToString("HH:mm")+"\r\n";


}
[/LEFT]


תודה.

קישור לתוכן
שתף באתרים אחרים

:cheesy: תודה.

איזה פקדים?(:nixweiss:אני לא ממש מכיר את התכונות של כל הפקדים, בספר עוד לא הגעתי לחלק הזה, נראה לי שהגיע הזמן להפסיק עם תרגילים ולהמשיך ללמוד... חבל, תרגילים זה יותר מעניין:(.)

נ.ב. :kopfpatsch: לא חשבתי על זה... (פשוט אני רגיל להשתמש ב"לולאות")

נ.ב.ב. מממ... בשביל זה אני צריך לכתוב "מונה" (enumerator), ואני עוד לא יודע איך עושים את זה (גם לשם עוד לא הגעתי, עברתי על זה רק מלמעלה)

קישור לתוכן
שתף באתרים אחרים

אז איך כותבים את זה?

[LEFT]foreach (datetime a in ?)
{
AlramList.Text += a.ToString("HH:mm") +"\r\n";
}[/LEFT]


מה כותבים ב? ?

חשבתי לכתוב כך:

[LEFT]ffs.list.time1[/LEFT]


אבל זה לא טוב כי חסר שם סוגריים מרובעות, ובהם מה אני אמור לשים?(ffs זה המופע של form2).וחוץ מזה הוא כותב לי אזהרה על הAlramList.

(Unreachable code detected)

ניסיתי לשים listbox במקום התיבת טקסט והוא הביא לי שגיאות, עשיתי לפי זה והמהדר הביא לי שגיאות, בדקתי גם כאן ולא הבנתי כלום, ניסיתי לתקן לפי מה שהבנתי ממנו וגם אז הוא הביא לי שגיאות, אני כבר די לא יודע מה לעשת עם זה.

עריכה: עבדתי קצת בסגנון נסיון וטעיה והצלחתי, זה מה שמוסיף את ההתראות לרשימה:


[LEFT]private void NewAlram_Click(object sender, EventArgs e)
{
//פותח את הטופס השני שדרכו שומרים התראות
ffs.ShowDialog();
//מוחק את כל מה שהיה עד עכשיו
listBox1.Items.Clear();
//מכניס הכל לרשימה
for (int a = 0; a != ffs.list.Count; a++)
{
listBox1.Items.Add(ffs.list[a].time1.ToString("HH:mm"));
}
}[/LEFT]


וזה מה שמבטל ומוחק (מהרשימה) התראות:

[LEFT] private void DeleteAlram_Click(object sender, EventArgs e)
{
//מוחק את ההתראה לפי האינדקס
ffs.list.RemoveAt(listBox1.SelectedIndex);
//מוחק את ההתראה מהרשימה
listBox1.Items.RemoveAt(listBox1.SelectedIndex);

}[/LEFT]


טוב אני גמרתי להיום אני אגמור את זה מחר.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...