3. בדיוק !!!, הפקד נבנה ב- ++C, וגם אם תרצה להוסיף פקד יעיל יותר, או שאתה תכתוב, או שמישהו אחר יכתוב, אבל זה עדיין ב- ++C !!!
זה רק מוכיח את תלות VB ב- ++C. זהו מדד לכוח.4. אמרתי את מה שרציתי להגיד, וזה שאתה לא מקבל את זה, זה לא אומר שאני צריך לכתוב את זה עוד פעם.
5. טוב שהבנת את הטענה, ועכשיו לתגובה:
באסמבלי אמנם אפשר לעשות יותר מב-++C, אם כי באופן "מפתיע לחלוטין" ניתן לשלב קוד אסמבלי בתוכנית ++C/C, אבל בכל מקרה, אנחנו לא
מדברים על שפות סף, כי אם על שפות עיליות, כמקובל היום, כולל את ++VB/C/C וכו'..., ולכן, כשמדובר בשפות עיליות, ++C/C חזקות מ-VB... אתה
רוצה לדעת למה אני מתכוון כשאני אומר חזקות ?
חזק, בהקשר לשפת תיכנות, הוא היכולת לבצע כמה שיותר דברים, בכמה שיותר יעילות, כאשר היכולת מתבטאת בתקשורת הקרובה יותר ל"שפת אדם"
מאשר לשפת מכונה. קירבה ל"שפת אדם" היא השפות העיליות, ושפת מכונה היא אסמבלי וכו'...
נראה לי שהבהרתי את כוונתי.
6. אם כבר אז כבר, אתה אמרת שאתה לא מגדיר את עצמך כמתכנת C, "אני לעומת זאת לא מגדיר את עצמי כמתכנת C", אבל אני לא הסקתי מזה
שאתה לא יודע C... זה רק בשביל להמחיש את מה שרציתי לומר במשפט, את הנושא העיקרי, סדר-עבודה... ואתה ממשיך עם הנימוסים שלך... חחח,
מילים בוטות... ולא, אני לא טיפש, לא חצוף, ולא שקרן...
אני מניח שאתה יודע שפה פרוצדוראלית לחלוטין כמו Pascal או C, בגלל שאתה, שמטיף ללא הפסקה, צריך לדעת שלפני שהולכים ללמוד שפה
מונחית-עצמים, לומדים קודם את הבסיס, שהוא שפה פרוצדוראלית, ולכן, כן צריך ללמוד C, או כל שפה פרוצדוראלית אחרת, לפני שלומדים ++C, בגלל
שהתחביר אולי עלול להטעות שהשינוי בין השפות הוא עוד כמה אפשרויות שנוספו, אך השינוי הוא מהותי, בצורת החשיבה השונה, ובדרך האחרת.
א) פה אתה טועה. באסמבלי חלה חובה להצהיר על המשתנים בקטע הנתונים (_DATA), לפני קטע התוכנית (_CODE). מה שאתה מתכוון, הוא היכולת
של התיכנות באסמבלי לכתוב מידע על כתובת אקראית בזיכרון, ואגב, גם היכולת הזו מוגבלת, כשמדובר בפלטפורמת Win32.
ב) שוב פעם אתה לא מבין את הכוונה שלי. מה שאני מנסה להראות, זה שהחשיבה הלינארית כפי ש"חושב" המעבד ממומשת ב-C בצורה קרובה מאוד
למציאות, ולא ממושת כמעט כלל ב-VB.
ג) אני אחזור על עצמי שוב. חפש ב-Google, יש המון מאמרים על זה, ואני בטוח שתמצא את הפיתרון הרצוי.
ד) טוב שהבנתי את כוונתי.
ה) נתחיל בזה שאני לא, ואין שום סיבה שבעולם לכך שתבטא את העצבנות שלך כאן. גם אני אלך אחד אחד.
* לפי מה שכתבת בהמשך, אתה באמת לא יודע מה זה Handle. אל תלך למילון עברי-אנגלי ותפרש לי מה זה Handle, כי זו לא המשמעות הנכונה
מבחינת התיכנות.
פלטרפומת ה-Win32, בנוייה כמערכת קלינט/שרת, כאשר הקלינט הוא התוכנה, והשרת הוא ה-Windows עצמו. מערכת השרת, נועדה לטפל ולנהל את
התוכניות, ולספק להן את המידע הדרוש בזמן המתאים. למשל, כשבתוכנית כלשהי נלחץ כפתור מסויים, השרת מספק את המידע לאותה תוכנית, כי נלחץ
אצלה כפתור. עכשיו, איך השרת יכול להעביר לתכנית את המידע הזה ? בשביל זה יש Handleים. בתחילת התכנית, מוצהרת הגדרה אשר מסבה פונקציה
כלשהי להיות Handle של התכנית, ואז נרשם המידע הנחוץ בשרת (כתובת ה-Handle, טפסים, כותרות וכו'). כשילחץ הכפתור, השרת ידע לספק את
המידע הנחוץ לכתובת של ה-Handle, כלומר הוא יהיה גוף חיצוני לתכנית שישתמש בפונקציה שהוגדרה להיות Handle.
אותה פונקציה, מקבלת כפרמטרים את המידע הרלוונטי, ומסבה אותו למידע "קריא", כמו הודעה. כעת, היא יודעת כי המידע מורה על כפתור מסויים
שנלחץ, והיא תקרא לפונקציה של הכפתור.
זה בגדול ה-Handleים, ה"פשוטים" שחייבים להיות בכל תכנית חלונאית, תחת Win32.
מנגנון ה-CallBack Function הוא אותו מנגנון של השרת. כשאתה מעביר Handle לפונקציה שכזו, היא מחזירה ערכים בדיוק כמו שהשרת עושה. כך
למשל פועלים הפקדים של ה-VB, שהרי נבנו ב- ++C. הם מקבלים מידע אודות המתרחש סביבם בכל הנוגע אליהם, ומבצעים פעולות.
בכל מקרה, ה-Handle עצמו, צריך וחייב להיות פונקציה שהערך המוחזר ממנה יהיה מסוג פוינטר (לרוב *void), זאת לשם ביצוע הפעולות הנדרשות
שממומשות ב-CallBack Function.
בקשר לפונקציות API שדיברת עליהן. נו הרי בוודאי שהן CallBack Function, כי הן חלק מהמערכת של השרת, ולכן המנגנון שלהן משותף למנגנון
הכללי של השרת.
* עכשיו, בקשר לקשר ל- ++C.
תגיד לי, או תן לי דוגמה אחת, ורק אחת, על כך שמתכנת VB (לא ++C/C וכו') היה יודע את הנ"ל, והרי הנ"ל הוא מה שקורה בפועל, בלי קשר ל-
++C/C. הרי ב-VB אין לך פונקצית Handle כלשהי שאחראית על הטיפול ב"שיגרות" או "אירועים" וכו'. הכל "אוטומטי", ולכן מתכנת VB לא מודע למה
שקורה בפועל.
ב- ++C/C, לעומת זאת, חייבים להגדיר פונקצית Handle, כחלק מההצהרות הנחוצות לשם יצירת חלון ורשימתו ב"שרת".
לכן, אם היית באמת מתכנת ב- ++C (ואני מדבר על פיתוח מערכות חלוניות), היית חייב להיתקל במושג.
* אל תכניס לי מילים לפה. לא אמרתי שאתה או כל מישהו אחר שמתכנת ב-VB הוא עלוב. גם אני מתכנת ב-VB. בקשר ל"לדעת איך המחשב עובד", כבר
ציינתי קודם.
* אכן ב-VB ה-Handle הוא אוטומטי, ולא ממומש על ידי המתכנת, כמצויין לעיל.
* נכון מאוד, אתה לא יכול להגדיר ב-VB פונקצית Handle, בין היתר בגלל שב-VB אין אפשרות להשתמש במצביעים (וגם עוד המון סיבות אחרות,
שקשורות למופשטות שב-VB, לאוטומטיות שבה).
* אכן בזמן ריצה, ניתן להחזיר את כתובת התכנית. מה זה כתובת התוכנית ?, נקודת ההתחלה שבקטע הקוד (_CODE), ואם אתה מתכנת C, אתה גם
צריך לדעת את זה. בנוסף, ניתן להחזיר כתובת של כל פונקציה אחרת, וזה בהחלט לא משנה אם זה ב-C, ב- ++C, ב-Assembly, ב-Cobol ובכל דבר
אחר שתומך בעניין העיקרי שציינתי. אמנם התוכנית לא בהכרח בבלוק אחד, אבל נקודה אחת, אפשר להחזיר. אם היית מכיר את הנושא אבטחה לעומק,
היית מבין זאת כבר בהתחלה.
* כנ"ל.
* פקד אכן עובד עם Handlים, ונדמה לי שציינתי את זה למעלה.
* Handle הוא כפי שציינתי לעיל, מושג, בדיוק כמו ש"פונקציה" היא מושג, ולכן, כן בונים אותם ב- ++C/C וכבר נתתי לך דוגמה. אם אתה רוצה, יש לי עוד
הרבה דוגמאות ל-Handleים שיכולים להסביר את המושג בפשטותו.
דרך אגב, עוד לא ירדת מהעניין של בורות, חוסר השכלה, חוסר ידע וכו' שלי ???
מה אתה מנסה להוכיח ? שאתה מתנהג כמו ילד בכיתה א' שחושב שהוא גדול על כולם ?
יש לי חדשות בשבילך. אתה לא גדול על אף אחד בפורום הזה, אז אל תשתמש בהנחות המטופשות שלך שאחרים לא יודעים מושג כזה או אחר (ואם כבר
עשית את זה, היית צריך להשתמש במושג מורכב ונדיר יותר מ"אבסטרקטי").
חוץ מזה, אין לזה שום קשר לנושא הפורום, או לנושא הדיון כאן.
נ.ב: אני מקווה שסיעאת הדשמיה לא תגיע אליך, כי אתה לא אחד שהייתי חושב שמגיע לו.
Dudenland