עבור לתוכן

קריאה לפונקציה באמצעות מחרוזת שמורה

Featured Replies

פורסם

שלום לכולם , שאלה קטנה

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

פורסם

אתה מתכוון שפתBASH? או אולי באסמבלר?

פורסם
  • מחבר

סליחה , כן זה חשוב לציין באיזה שפה אתה עובד :) אני מחפש לעשות את זה ב C / C++

פורסם

לא אפשרי.

זה אפשרי רק אם אתה מכין את זה מראש, לדוגמה ע"י יצירת hash map שמקשר בין מחרוזות לפונקציות.

פורסם
  • מחבר

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

נראה לי שאני פשוט אעשה Case ענק וזהו :)

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

פורסם

בשפות מתקדמות יותר אפשר לעשות את זה באמצעות reflection, ובשפות סקריפטינג אפשר לעשות את זה באמצעות eval.

פורסם

לאיזו מערכת הפעלה אתה מתכנת?

בלינוקס יש לי פונקציות dlopen dlsym שאני לא יודע אם קיימות גם לווינדוס.

במידה ושמים את בפונקציות שצריך לבחור בספריה דינמית (so או dll) ניתן למפות אותן לתוך מצביע באמצעות הפונקציות האלה, ופשוט לקרוא אחרי זה למצביע.

עריכה

חיפוש קצר באינטרנט מצא שיש לווינדוס בשמות קצת שונים

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=746&lngWId=3

פורסם

גם בחלונות זה אפשרי (באמצעות LoadLibrary ו-GetProcAddress), אבל זו פשוט דרך עקיפה (מאוד) ליצירת מילון שממפה בין שמות של פונקציות לפונקציות עצמן.

פורסם

כן הוספתי קישור לפונקציות האלה בווינדוס.

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

מילון זה שורות סטטיות.

פורסם

הממ, בעצם יש משהו בדבריך. החסרון העיקרי כאן הוא שזה דורש לעבוד מול DLLים, שזה לא כיף.

פורסם
  • מחבר

תודה חברים אבל נראה לי שאני מעדיף לכתוב קצת יותר או להכין Hash Table קצת ארוכה מאשר לעבוד עם DLL הסיבה היא שיש לי בערך כ 120 פונקציות שונות המחולקות ל 12 קבצים ואומנם יש ל DLL כמה יתרונות אבל העבודה והקומפילציה קצת מסורבלת ואין לי יותר מידי זמן לבזבז...

בכל מקרה תודה רבה על העזרה !

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים