מאקרו של ויזואל סטודיו
-
כמה שחפרתי לא מצאתי איך אני יכל לשנות ע''י מאקרו שמות של משתנים שנמצאים בתוך פונקציות, האם למישהו יש מושג?
תודה רבה.למשל הקוד הבא נותן רשימה של כל שמות הקלאסים והפונקציות אבל לא את שמות המשתנים הפנימיים שבתוך הפונקציות, מה צריך לעשות כדי שיתן גם אותם?
Sub IsCodeTypeExample() ' NOTE: This example requires a reference to the System.Text ' namespace. ' Before running this example, open a code document from a project. Dim item As ProjectItem = dte.ActiveDocument.ProjectItem Dim sb As New StringBuilder RecurseElements(item.FileCodeModel.CodeElements, 0, sb) MsgBox(item.Name & " contains the following elements:" & vbCrLf & _ vbCrLf & sb.ToString()) End Sub Sub RecurseElements(ByVal elems As CodeElements, _ ByVal level As Integer, ByVal sb As StringBuilder) Dim elem As CodeElement For Each elem In elems ' Add element to the list of names. sb.Append(" "c, level * 8) sb.Append(elem.Name & " [" & elem.Kind.ToString() & "]" & _ vbCrLf) ' Call this function recursively if element has children. If elem.Kind = vsCMElement.vsCMElementNamespace Then RecurseElements(CType(elem, CodeNamespace).Members, _ level + 1, sb) ElseIf elem.IsCodeType Then RecurseElements(CType(elem, CodeType).Members, _ level + 1, sb) End If Next End Sub
פורסם במקור בפורום CODE613 ב30/07/2013 16:28 (+03:00)
-
אתה מדבר בוודאי על VBA???
להערכתי סיכוי קלוש שהמידע הזה זמין בכלל, תנסה לשאול בהצפת מחסנית. אבל לא הייתי מאמין שיש אפשרות, אלא אם כן אתה מתכנת בשפות שאינן מתקמפלות שאתה יכול פשוט לקרוא את קבצי הטקסט.פורסם במקור בפורום CODE613 ב02/08/2013 02:20 (+03:00)
-
אז תקרא שורה שורה בקובץ הטקסט, ותלכוד את המשתנים כל שפה לפי כלליה ופרטותיה ודקדוקיה והסודות הגדולים היוצאים ממנה........ להגיד שיש משהו מוכן? הלואי אם כן אז זכית בלוטו.
זה לא בעיה לעשות בשביל זה אנחנו מתכנתים... אלא שצריך לעשות את זה מחדש עבור כל שפה כמעט....
אבל אני עומד ותמהה אם יש את הקוד הנ''ל שנותן לך את כל שמות הקלאסים והפונקציות והמשתנים הלוקאליים ואפילו את הפרמטרים של הפונקציות וגם נותן לך לשנות את השמות שלהם אז למה שלא תהיה אפשרות לשנות את המשתנים שמוצהרים בתוך הפונקציות? הרי גם להם אפשר לשנות את השם ע''י הפקודה Rename, אז איך עושים את זה דרך המאקרו?
פורסם במקור בפורום CODE613 ב02/08/2013 13:14 (+03:00)
-
א. זה לא VBA, זה VB.NET
ב. מאוד הגיוני שזה יקרא מבנים פנימיים (משתנים לולאות תנאים וכו'), וידנית אכן זה אפשרי, אבל עד כה לא מצאתי איך עושים.
ג. בקובץ VB.NET קל יחסית למצוא משתנים, אבל בקובץ C# זה קשה מאוד! כך נראה לי.
ג. הצפיות כוללות גם משתמשים לא רשומים.פורסם במקור בפורום CODE613 ב02/08/2013 13:32 (+03:00)
-
שים לב שפרמטרים אתה כן יכול להשיג, אם זה מעניין אותך.
פורסם במקור בפורום CODE613 ב02/08/2013 15:32 (+03:00)
-
היי. למה בכלל אתה צריך לדעת משתנים פנימיים??? מה זה משנה מה השם שלהם. וגם אין לך מושג איך הוא מקפל את זה בפנים. זה משנה על איזה פלטפורמה זה עובד, שפת C# פעם היתה יכולה גם לעבוד על JAVA ולא יודע מה עוד. ויכול להיות שהוא בפנים לא שומר בכלל את שמות המשתנים הפנימיים כיון שאינם צורכים זיכרון. אז למה שיתן לך את זה.
והסיבה שאת שאר הדברים הוא נותן זה כי זה נועד לשימוש דינמי, שהשתכלל מאד בNET 4. שאתה אמור לדעת את שם הפונקצייה ואת חתימתה ואיזה פרמטרים היא דורשת, למצב לדוגמא שיש לך פונקצייה שמטפלת באופן גלובלי באובייקטים שאין להם אותו ממשק אינטרפייס אז אפשר להחיות אותם על ידי אינסטנס עם השם של המתודה או האובייקט וכו'.ולמעשה למה אתה צריך את זה?
פורסם במקור בפורום CODE613 ב22/08/2013 01:12 (+03:00)
-
ולמעשה למה אתה צריך את זה?
בשביל לעשות ערפול לקוד.
פורסם במקור בפורום CODE613 ב22/08/2013 08:44 (+03:00)