שלום שאלה

ronenaviv

New member
שלום שאלה

שלום, תכנתתי אוביקט COM ב VB בשביל אפליקציה ב ASP, לחצי על "הפוך לDLL" והוא פלט לי מספר קבצים במספר סיומות, איזה מהם עלי לעלות לשרת שלי? הרבה תודה. אביב
 

IdanR

New member
רק את ה DLL אני חושב...

אותו דבר קורה ב VC כאשר אתה הופך קובץ מסוים לEXE הוא גם "פולט" קבצים אחרים, של שלבי ביניים, ו debugging.
 

The_Mighty_Perr

New member
ממש לא

בס"ד VB לא יורצ קבצי ביניים. VB לא יוצר קבצי OPT, לשמירה על צוה של ממשק משתמש. יש העול את הDLL וקובץ TLB, במידה ויש, אם יש עוד קבצים כדאי להעלות גם אותם. לא לשכוח לרשום אותם ברג´יסטרי של השרת... בברכה...
 

IdanR

New member
או, כן..

שכחתי ש VB זה עולם אחר לגמרי.. מה קורה לי בזמן האחרון. : טוב, אני לא מתעסק עם VB הרבה, ת´אמת.
 
קובץ TLB בשביל ASP?

למה? יש לזה קשר לזה שה COM נכתב ב VB? כי כשה COM נכתב ב CPP תחת VS אין שום צורך ב TLB במחשב שבו שמים את ה COM.
 

TZURYOAV

New member
נא לא לדבר על דברים שאתה לא מבין

VB כן יוצר קבצי ביניים,במיוחד בגלל שהוא משתמש ב לינקר ו במהדר של VC,ניתן אפילו באופן עצמאי לקשר תוכנית של VB ואז בעזרת דגלים לייצא פונקציות וליצור DLL פשוט אני מבקש ממך להקפיד לדבר רק על דברים שאתה מבין בהם! תודה יואב צור-השמאל הציוני!
 

gilad_no

New member
לא חייבים TLB

TLB בסה"כ נותן את ההגדרות של ממשק הCOM. זה נוח אם רוצים למשל להשתמש באובייקט COM בVC. למרות שאפשר גם לקרוא למתודות לפי מספר סידורי. מכיוון שASP לא מהודרת מראש אלא מפוענחת בזמן ריצה (למה אין לזה מושג בעברית?!?!), היא יכולה לגשת לממשקים ולהפעיל אותם גם ללא הגדרה שלהם מראש.
 

The_Mighty_Perr

New member
ואם אני רוצה לעבוד דרך INTERDEV?

בס"ד אני מקבל את ה-INTELLISENSE רק אם יש TLB. בלי קשר להאם הוא בקובץ TLB או בתוך ה-DLL עצמו. זה נקרא מפורשת כמו שאני טורח להזכיר, אינטרפריטציה נראת פירוש בעברית. ASP בכלל לא יכולה לגשת לממשקים. הנה דוגמא: כתבתי ב-VB6 רכיב ACTIVEX DLL עם 2 ממשקים ומחלקה. הגדרתי בהן שיטות, מימשתי את השיטות במחלקה. אם הלקוח היה CPP הייתי יכול לכתוב:
C o; I1* p1; I2* p2; p1 = &o; p1.I1_method; p2 = &o; p2.I2_method /* or */ I1* p1; I2* p2; p1 = new C; p1.I1_method; p2=p1; p2.I2_method​
אבל ב-ASP כל המשתנים הינם VARIANT(בהנחה שמשתמשים ב-VBS), ואתה לא יכול ליצור הפניה לממשק אחר ממשק ברירת המחדל ש-VB יוצרת לכל מחלקה. ברכיב שלי ממשק ברירת המחדל של C ריק. וכלום לא יפעל. בברכה...
 

gilad_no

New member
כמה שטויות!

ASP יכולה לגשת כמו ענק לממשק COM!!! על זה היא מתבססת. והתקנת הממשק לא דורשת שום TLB. פשוט לרשום את הDLL והכל יעבוד. ניתן לגלות מידע על מתודות של ממשק גם בזמן ריצה (זה אחד היתרונות של COM) וזו הסיבה שניתן להשתמש באובייקטים של COM בשפות סקריפט. וזה שכתבת ACTIVEX, זה עדיין לא אומר כלום. ACTIVEX הוא לא אובייקט COM במלוא המובן של המילה. ובלי קשר, אני מקבל את ההערה שלך לגבי "אינטרפרציה = פירוש". ברחה לי המילה מהראש.
 

The_Mighty_Perr

New member
אפילו לא אחת

בס"ד לא בצורה הזו. למרות ש-ASP מבוסססת על COM, היא בעייתית. כדי לקבל INTELLISENSE צריך TLB. ACTIVEX הוא COM. אתה יודע מה זה ACTIVEX? אולי נוסיף את המילה ל-FAQ? בברכה...
 

gilad_no

New member
בעייתית?

תגיד את זה למאות אלפי אתרי ASP שמשתמשים ברכיבי COM אלפי פעמים ביום. כל קריאה פשוטה לDB מתוך ASP נעשית דרך ממשקי COM. צריך את הTLB רק במהלך הפיתוח, לא במהלך ההרצה התקינה. הASP לא משתמש בו. ACTIVEX מבוסס על מודל הCOM אבל הרעיון שלו הינו הפקד (זה מקור השם, לא? "פקד ACTIVEX"). הרעיון בו הינו האפקט הוויזואלי שניתן להטמיע אותו בדפי HTML, יישומים אחרים ועוד דברים.
 

The_Mighty_Perr

New member
כן

בס"ד יופי... אם זה כתוב ב-VB, או משהוא בסגנון ADO, משתשים בממשק ברירת המחדל(ביטוי של מתכנתי VB...). והוא הממשק היחיד ש-VBS ו-JS יכולות לגשת אליו. בשבילך אני אתקין VB, ואעזה בדיקה קטנה, אם ASP יכול לגשת לממשק אחר ממשק ברירת המחדל. לא. ACTIVEX הוא COM שפשוט חייב לממש עוד כמה ממשקים ולא רק את IUnknown. יש גם ACTIVEX DLL ו-EXE, לא רק פקדים. בברכה...
 

gilad_no

New member
בקשר לINTERDEV

כמו שאמרתי, TLB רק עוזר למפתח לעבוד יותר קל. אין לו שום קשר להרצה עצמה. תוכל לכתוב את הקוד גם ללא הTLB והוא ירוץ לך. מקסימום תצטרך לכתוב את הפקודות ידנית והוא לא ישלים לך את השמות.
 

TZURYOAV

New member
ממש לא! המטרה של TLB היא

לאפשר מרשלינג,כיוון שאוביקט COM שנבנה עם VB הוא OLE AUTOMATION COMPATIBLE כלומר ממש את ממשק IDISPATCH ומאפשר למתכנת להשתמש רק במספר מצומצם של משתנים(אותם משתנים שמכילים מספיק מידע על הגודל שלהם)לא צריך את ה TLB כי המרשלינג נעשה בעזרת ה UNIVERSAL MARSHLER שנמצא באחד ה DLL של OLE ששכחתי את שמו נדמה לי OLE32.DLL
 

The_Mighty_Perr

New member
זה לא נקרא dual interfaces?

בס"ד כשיש מימוש של ממשק של המתכנת + IDispatch? יש אפשרות לקרוא לשיטות דרך הממשק, או דרך הפונקציה ההיא של IDispatch, שאני לא זוכר איך קוראים לה... בברכה... נ.ב. marshaling ז בלאגן, ונדמה לי שהורידו את זה בדוטנט, כדי לחסוך צרות...
 
למעלה