פורסם 2006 בינואר 2819 שנים יש איזו פקודה שעושה את הפעולה ההפוכה מCOUT אוPRINTF ומוחקת משהו שנרשם מקודם בעזרת אחת מהפקודות האלו?(עדיף שהיא תהיה בספריית STDIO.H)עריכה- אוקיי עכשיו מצאתי שיש את האופרטור delete שיכול למחוק פוינטרים.אז כדי למחוק תו (למשל A) אני עושה משהו כזה?char letter='a';char *ptr;ptr=&letter;printf("%c",letter);delete letter;זה נכון?
פורסם 2006 בינואר 2819 שנים ממש לא.. אתה עושה פה ערבוב של נושאים לא קשורים...דבר ראשון אם אתה משתמש ב C++ אז אין צורך להשתמש ב printf וכו'..עכשיו ברגע שאתה מדפיס משהו למסך, ברגע שהמידע מוצג על המסך הוא מנותק מהערכים שהשתמשת להצגתו (על פי מה שאתה אומר, אם אני ידפיס משתנה על המסך, ואז אני ישנה אותו, אז פתאום במסך בכל הפעמים שהוא הוצג, הוא ישתנה).delete מפנה מקום שהוקצא בזכרון (וקוראת ל destructors הרלוונטים), היא לא עושה משהו אחר...אם אתה רוצה להתעסק באופן מתקדם עם הפלט למסך (למחוק דברים ספציפים וכו'), ממה שאני יודע אין משהו ספציפי כללי ב C++ שנותן לך את זה, ואתה צריך להשתמש בספריות ספציפיות לכל סביבת עבודה (NCURSES ב LINUX, ב VISUAL C יש את CONSOLE וכו'), ככה ששם אתה יכול ללכת למיקום X, Y כלשהו על המסך ולכתוב מחדש שוב דברים.למשל ב VISUAL C++ עם שימוש ב CONSOLE, אתה יכול לראות את המיקום הנוכחי, ואז לחזור אחורה לפי מה שהודפס ולהדפיס שוב משהו אחר:void gotoxy(int x, int y){ HANDLE hConsoleOutput; COORD dwCursorPosition; cout.flush(); dwCursorPosition.X = x; dwCursorPosition.Y = y; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);}
פורסם 2006 בינואר 2819 שנים יש איזו פקודה שעושה את הפעולה ההפוכה מCOUT אוPRINTF ומוחקת משהו שנרשם מקודם בעזרת אחת מהפקודות האלו?(עדיף שהיא תהיה בספריית STDIO.H)עריכה- אוקיי עכשיו מצאתי שיש את האופרטור delete שיכול למחוק פוינטרים.אז כדי למחוק תו (למשל A) אני עושה משהו כזה?char letter='a';char *ptr;ptr=&letter;printf("%c",letter);delete letter;זה נכון?אני מתגעגע לזמן שחשבתי ככה...
פורסם 2006 בינואר 2819 שנים Icebreak - למה להסתבך?אפשר לעשות cout << '\b';או לחילופיןprintf('\b');זה מדפיס את התו המיוחד שמייצג backspace, כלומר מחיקת תו אחד.או לחילופין להשתמש ב-r\ שמוחק את כל השורה.
פורסם 2006 בינואר 2819 שנים כי לא בטוח שהוא רוצה למחוק מה שהוא רשם כרגע.יכול להיות שהוא רוצה למחוק שורות שהוא כתב לפני פעמיים \n למשל.
פורסם 2006 בינואר 2819 שנים מחבר תודה שניצל לא חשבתי על זה במקרה הזה זה דווקא כן מתאים לי... אני עוד לא רוצה להיכנס למה שICEBREAK רשם...מתקדם מדי בשבילי
פורסם 2006 בינואר 2819 שנים הדרך הכי טובה זה פשוט להיכנס לכתובת הפיסית של מסך מספר 0 (יש כמה מסכים.... בשביל עדכון מהיר...), זה יוצא בערך בכתובת 0B200h, אם אני לא טועה, אבל אל תתפוס אותי במילה....בכל מקרה, שם אתה הולך לתא שמאכסן את המידע שאתה רודה למחוק, ובאיזור הASCII אתה שם לו את הערך האסקי של רווח (27H נדמה לי...)למדתי על זה בשעור מערכות הפעלה........ דברים מגניבים אפשר לעשות עם זה...........
פורסם 2006 בינואר 2819 שנים אם אני לא טועה, (ואני די משוכנע שלא) מערכת ההפעלה לא נותנת גישה ישירה למסך. בדיוק בגלל זה יש דבר כזה שנקרא system calls (בווינדוס int 21h ובלינוקס int 80h).אם יש דרך אחרת.... אני אשמח לשמוע על כך.מטי.
פורסם 2006 בינואר 2919 שנים שום מערכת הפעלה מודרנית (שמשתמשת ב- protected mode) לא נותנת לתוכניות לגשת לזיכרון הפיזי.מערכת ההפעלה האחרונה שבה אולי היה אפשר לעשות את זה היא windows98 (וגם אז, רק ב- dos-mode)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.