פונקציית StrPtr עושה בעיות ב 64 ביט
-
כנראה שסידרת הבדיקות שערכתי לא היו שיטתיות, בסוף מצאתי שעשיתי משהו לא נכון בקוד של הבדיקה, וזה הביא אותי לטעות ולחשוב שהבעיה בקוד היא בפונקציית ה API. אבל כרגע הכל עובד עם הפתרון שלך. ה Long הסופי הוא בסדר, היה צריך להחליף את הטיפוסים רק בתוך הארגומנטים.
יכול להיות שמה שכתוב באינטרנט זה נוגע למעשה איפה שאתה מעביר את הערכים לעוד API. אבל אם הערכים מטופלים ב vba זה חוזר להתנהגות רגילה של Long. הסיפור שם קשור לכתובות בזיכרון וסוגי דברים כאלו שממש קשורים לטרחני C++ ולא לאנשים אשר כמונו.....פורסם במקור בפורום CODE613 ב12/02/2014 20:32 (+02:00)
-
הסיפור שם קשור לכתובות בזיכרון וסוגי דברים כאלו שממש קשורים לטרחני C++ ולא לאנשים אשר כמונו.....
העיקרון הוא פשוט. ברגע שהמערכת הפעלה מקצה קטע בזיכרון לתוכנה. היא שולחת פרמטר מספר שמיצג כתובת בזיכרון.
אם יש לך 4 גיגה אז כאילו הזיכרון זה משתנה גלובלי מערך של בתים באורך 4 גיגה. והמספר זה מספר האיבר במערך שמתחילה ההקצאה.
את האורך ההקצאה התוכנה יודעת כי היא ביקשה הקצאה של X בתים אז מספיק שחוזר המיקום, במקרה אין מקום בזיכון חוזרת כתובת 0 שזה מסמל על שגיאהבמערכות 32 ביט המספר שמיצג את הכתובת בזיכרון הוא uint32 שזה אומר שהכתובת המקסימלית זה בערך 4 מליארד. ולכן זה הסיבה ש32ביט לא משתמש ביותר מ4 גיגה זיכרון ראם. במערכות 64 הכתובת היא uint64 ולכן צריך לשנות את הטיפוס לזה.
פורסם במקור בפורום CODE613 ב12/02/2014 21:15 (+02:00)