בעיה מוזרה מאוד

progger

New member
בעיה מוזרה מאוד

בתוכנית שלי, כל עוד אני מריץ אותה דרך ה VB, אין שום בעיות והכל עובר חלק. אם אני מקמפל אותה, הקימפול עצמו עובר בסדר, והתוכנית רצה טוב. ברטע מסוים בתוכנית, ורק בקטע הזה, מתקבלת הודעת שגיאה:
Run-time error ´9´. Subscript out of range​
אם אני לא טועה, הודעה זאת אומרת שהיה נסיון לגשת לתא במערך או באוסף בעל אינדקס לא קיים. הבעיה היא שממש ממש לא נראה לי שהיתה גישה לתא שכזה, ומה שעוד יותר מוזר זה שהשגיאה נוצרת רק כאשר אני מריץ את התוכנית המקומפלת ולא כשאני מריץ את הקוד דרך ה VB, אפילו אם אני מבצע בדיוק את אותן הפעולות למישהו יש שמץ של מושג מה לא בסדר?? אני קרוב לייאוש טוטאלי...
 

eliranh

New member
הרצת במחשב שמותקן ויבי או ש...

הרצת במחשב של מישו שאין ויבי?
 

boaz10

New member
בעיה מוזרה מאוד

האם אתה משתמש באיזושהי פונקציה מתוך DLL או ב ACTIVEX ? לעתים, פעולות שקורות בתוך אותו ACTIVEX יכולות לגרום לבעיה בלי שאתה בכלל יודע שהיתה גישה למערך. אם כן, תכתוב איזה ACTIVEX אתה משתמש, כיוון שהיתה לי אותה הבעיה, רק שאני לא זוכר מה היה הפתרון. אם אדע באיזה ACTIVEX מדובר, כנראה אזכר.
 

progger

New member
זה נעשה אפילו עוד יותר מוזר

קודם כל, אני לא משתמש ב ActiveX בטופס בו נוצרת השגיאה, למעט שימוש ב ADODB.Connection, אבל אין (לדעתי) קשר בין השגיאה לפקד. התוכנית רצה על מחשב עם VB, אבל גם על מחשב ללא VB נוצרת אותה בעיה. מאחר שאותה הודעת שגיאה נוצרת כל הזמן, השתמשתי בקוד הבא לטיפול בשגיאות:
on error goto fixError fixError: msgbox "Test" resume next​
ובכל זאת קיבלתי את הודעת השגיאה המקורית. אני מזכיר לכם שהבעיה היא שהשגיאה נוצרת רק בתוכנית המקומפלת, אבל כשמריצים אותה מהקוד היא עובדת חלק. יכול להיות שהבעיה היא בקומפיילר? הקומפילציה עצמה עובדת בלי בעיות, אבל יכול להיות שנדפק הקומפיילר מאיזושהיא סיבה?
 

boaz10

New member
SERVICEPACK

איזה SERVICEPACK מותקן אצלך ? התופעה עם ה MSGBOX רק מחזקת את דעתי שמדובר בשגיאה שלא מה SOURCE שלך אלא מהפקד. אם תוכל לשלוח את הקוד באימייל אנסה לבדוק אצלי [email protected]
 
אולי זה יעזור

כאשר אני נפגש בשגיאה מוזרה ובלתי רצויה , אני משתמש כותב on error resume next כתוב את זה מעל או מתחת לשורה שבה קוראת הבעיה חיסרון-לפעמים השגיאה פשוט מונעת מחלק מהתוכנית לפעול והפונקציה רק מבטלת את הודאת השגיאה ואת הפסקת התוכנית.
 
למעלה