ABA


"שכאני עושה nothing למשתנה string יש ביעה (VB)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7480 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7480
mega-killer
חבר מתאריך 1.8.02
859 הודעות
   18:56   05.12.03   
אל הפורום  
  שכאני עושה nothing למשתנה string יש ביעה (VB)  
 
   תראו... קבעתי משתנה
dim aaa as string
(זה יכול כל דבר כמו long או integer)
קיצר בסוף כשאני רוצה למחוק אותו מהזיכרות:
set aaa = nothing
אז הוא אומר לי שגיאה...

כשאני מבטל את as string (או מה שזה לא יהיה) אז אין בעיה
אבל אני חייב שיהיה string כדי שהמערך יהיה בתבנית string ...

מה הבעיה?
תודה...



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

  האשכול     מחבר     תאריך כתיבה     מספר  
  לא הבנתי.... NoX 05.12.03 19:00 1
     אחי, זה לא קשור ל- SET mega-killer 05.12.03 19:05 2
         nothing מסירה אובייקטים מהזיכרון codmaster 06.12.03 11:57 3
             ואם אני יעשה ...: mega-killer 06.12.03 12:34 4
  מה אתה רוצה? הסבירו לך... AlexKarpman 06.12.03 19:01 5
     האמת אין מבין... כנס... mega-killer 06.12.03 22:03 6
         אני ממליץ לך לקחת ספר VB טוב וללמוד... AlexKarpman 06.12.03 23:15 7
             אאאה אוקיי אבל... mega-killer 07.12.03 14:21 8
                 אני לא מבין מה אתה שואל. AlexKarpman 07.12.03 14:38 9

       
NoX

   19:00   05.12.03   
אל הפורום  
  1. לא הבנתי....  
בתגובה להודעה מספר 0
 
   מה זה set aaa = nothing ?
מה הקשר set ? לא משתמשים ככה בפקודה הזאת
תעשה אולי: "aaa = "nothing עם גרשיים ובלי ה-set הזה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
mega-killer
חבר מתאריך 1.8.02
859 הודעות
   19:05   05.12.03   
אל הפורום  
  2. אחי, זה לא קשור ל- SET  
בתגובה להודעה מספר 1
 
   זה עושה בעיה גם בלע SET אם אתה כל כך מתעקש אבל עם אני עושה רק:
dim aaa
ואז
set aaa = nothing
אז אין בעיה והוא באמת מוריד אותו מהזיכרון



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

   11:57   06.12.03   
אל הפורום  
  3. nothing מסירה אובייקטים מהזיכרון  
בתגובה להודעה מספר 2
 
   כאשר אתה מגדיר את המשתנה שלך כמחרוזת הוא אינו אובייקט!!
ולכן אינך יכול להסיר אותו מהזיכרון כך.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
mega-killer
חבר מתאריך 1.8.02
859 הודעות
   12:34   06.12.03   
אל הפורום  
  4. ואם אני יעשה ...:  
בתגובה להודעה מספר 3
 
   aaa = ""
אז אני יודע שזה לא מוריד אותו מהזיכרון אבל זה ימחק את הנתונים שהיו פעם מהזיכרון?

ואחרי שעשיתי את זה אני יכול לעשות set aaa = nothing?

תודה...



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

   19:01   06.12.03   
אל הפורום  
  5. מה אתה רוצה? הסבירו לך...  
בתגובה להודעה מספר 0
 
   ה-statment:
Set פועל רק לגבי אובייקטים.
כדי לבצע פעולת השמה יש להשתמש ב-Let:
Let iMyInteger = 58

מאז ימי הBASIC FOR ATARI בערך, לא משתמשים בזה, ועושים השמה ישירות:
iMyInt = 58

Set מוגדר לגבי אובייקטים(ב-VB מגודבר בעצם בהפניות לאובייקטי ActiveX)
Dim oMyObject as CMyClass
Set oMyObject = New cMyClass
...
Set oMyObject = Nothing

בקוד למעלה:
*אני מצהיר על משתנה מסוג של מחלקה מסויימת(המשתנה הינו הםניה לאובייקט)
*אני יוצר אובייקט חדש מאותו סוג, ומשים הפניה לאותו אובייקט במשתנה שלי.
*עושה מה שאני עושה...
*שם במשתנה שלי(הפניה לאובייקט, לא האובייקט עצמו) Nothing - כלומר הפניה ריקה.

הדבר משמש למנגון ה-Reference Counting של COM, ע"מ לדעת מתי לפרק את האובייקט.

אתה ***לא יכול*** לשים למשתנה רגיל Nothing, רק ל***הפניה***(פויינטר :-)).

יש מבין?
יופי.

כאשר אתה עושה:
Dim vMyVariant
זה שקול ל:
Dim vMyVariant As Variant

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
mega-killer
חבר מתאריך 1.8.02
859 הודעות
   22:03   06.12.03   
אל הפורום  
  6. האמת אין מבין... כנס...  
בתגובה להודעה מספר 5
 
   ז"א שאי אפשר למחוק משתנה מותנה?

או שצריך לעשות
dim aaa as string
set aaa = new string

ורק אז אני יכול לעשות
set aaa = nothing
=

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

תודה...



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

   23:15   06.12.03   
אל הפורום  
  7. אני ממליץ לך לקחת ספר VB טוב וללמוד...  
בתגובה להודעה מספר 6
 
   String הוא "סוג פרימיטיבי" ב-VB.

כל משתנה מסוגים כמו String, Integer, Long, Single, Double, Boolean, Date, Currency...וכו' מאוחסן כמשתנה רגיל.
הגישה אליו ישירה.

רשומות/UDTs(ב-C זה נקרא struct, ב-VB זה נקרא Type) - גם אליהם יש גישה ישירה.

לאובייקטים חיצוניים(שב-VB אלו רכיבי COM בלבד), ואובייקטים פנימיים(ממחלקות שאתה כתבת, או פקדים פנימיים של VB, כלומר תיבת טקטס, תוויות וכו') - מאוחסנים היכנשהו, והמשתנה שאתה משתמש בו הוא רק ***הפניה*** למידע האמיתי.

כמו שאמרתי קודם.
Set אתה עושה רק לגבי הפניות(משתני אובייקט).
לא לגבי שום דבר אחר(כמו Stringים...)

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
mega-killer
חבר מתאריך 1.8.02
859 הודעות
   14:21   07.12.03   
אל הפורום  
  8. אאאה אוקיי אבל...  
בתגובה להודעה מספר 7
 
   ז"א שהתוכנית שלי תגדל ותגדל מבחינת זיכרון אם אני משתמש ב STRING ואין שום אפשרות להוריד? ככה הבנתי...

כי אחרי שאני מסיים להשתמש במשתנה אז אני לא רואה שהזיכרון חוזר...



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

   14:38   07.12.03   
אל הפורום  
  9. אני לא מבין מה אתה שואל.  
בתגובה להודעה מספר 8
 
   תנסח את השאלה בבהירות ובדיוק.
אני לא מבין מה הבעיה...?


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

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

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



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