שלום,
קטנה על StringBuilder

pagis

New member
השאלה היא אם את צריכה

לנתח את הטקסט ב realtime. בהנחה שהתשובה היא כן את יכולה לזייף realtime ע"י כך שתנתחי את הטקסט בתוך איזה thread שירוץ מידי פעם וינתח את כל הטקסט שיש עד עכשיו. אז את עושה dispose ואת יחסית בסדר. במקרה קיצוני את תמיד יכולה להריץ את ה GC אבל זה לא מומלץ. בכל מקרה, אם זכרון זה הבעיה שלך אני ממליץ לך לנסות לעבוד עם פוינטרים כי מניסיון שלי בד"כ מתודות של ה framework לא ממש יעילות, בלשון המעטה.
 
... אתה אומר שבעצם -

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

pagis

New member
זה הכל שאלה של מה את מנסה לעשות

מה את מנסה לנתח ובאילו נקודות בדיוק. thread יכל לרוץ במרווחי זמן כאלה שהמשתמש לא ישים לב (ובהרבה מקרים זה מה שעושים). אם תסבירי בדיוק מה את מנסה לעשות יהיה קל יותר לעזור
 
אז הסיפור הוא כזה:

אני בונה editor שטוענים אליו קובץ dll. לאחר זיהוי הקלאסים והמתודות שנמצאים בקובץ, המשתמש מתחיל להקליד לeditor שורות קוד. ברגע שהמשתמש הקליד שם של קלאס או פונקציה שזוהתה בDLL, אני מציגה לו (כמו בEDITOR של .net למשל ) - את מאפייני הפונקציה. ברגע שהוא לוחץ על נקודה שמגיע לאחר שם שזוהה מהDLL אני מציגה לו מתודות רלוונטיות... באופן דומה אני מציגה למסך לייבלים כשהמשתמש יקליד : או ) ... זה הסיפור. מכאן - שאני לא יכולה להפעיל פונקציות אחרות (שיציגו מידע למסך) - אלא אם כן המשתמש בזה הרגע סיים להקליד מילה שזוהתה כאחת שגוררת אחריה תגובה. יש צורך ב-thread לתוכנית מסוג כזה?
שוב תודה!
 

pagis

New member
זה תלוי בך

את צריכה לתכנן מנגנון שיעקב אחרי שינויים אחרונים, כי אין לך סיבה לעקוב כל פעם אחרי כל מה שכבר נכתב. את צריכה לראות איך המנגנון הזה עובד מבחינת דרישת משאבים מהמחשב ואז להחליט האם יש צורך לשים אותו ב thread נפרד. חוץ מזה אני חושב שדי רצוי להשתמש ב threading אם את רוצה להציג על המסך דברים בצורה דינאמית תוך כדי שהפעולות האחרות של ה editor לא נפגעות, אבל את זה תאלצי לשאול מישהו שמבין קצת יותר ב GUI, אני שונא את זה ונמנע מזה ככל האפשר כך שהידע שלי הוא בעיקר ניחוש מושכל, לא מעבר לזה. בכל מקרה מבחינת המנגנון לאיתור השינויים, הייתי בונה איזה אובייקט שיאכסן את השינוי האחרוני וסביבתו ומנתח רק אותם כי אין סיבה לנתח הכל בכל פעם מחדש. ואז אין לך בעיה לרוץ באיטרציה על string באורך קבוע מראש שמכיל את מה שאת מחשיבה כסביבה של שינוי ואת הנתונים תזיני לתוכו מתוך string שיכיל את כל מה שהוקלד. מצד שני זו נראית לי שיטה לא כ"כ מוצלחת להחזיק את כל הטקסט בתוך string כי אני מניח שהוא יכל לגדול למימדים מפלצתיים ואז אם אח"כ תרצי לעשות איתו כל מיני דברים, כמו לערוך אותו או להריץ עליו שאילתות זה יהיה קצת מורכב. אולי כדי לך להשתמש באיזה אובייקט XML DOM. נראה לי שזה יהיה פתרון מאוד אלגנטי. הוא גם יאפשר לך להזין ולערוך ולעשות מה שאת רוצה, ואם תבני אותו יפה גם להריץ עליו איזה טרנספורמציות ואיזה שאילתות שתרצי (ובקלות) וגם יהיה קל יחסית על הזיכרון, תוכלי לשמור את זה לקבצים בפורמט סטנדרטי וגם בטח יש לזה עוד המון יתרונות. בכל מקרה שיהיה לך בהצלחה גדולה אבל למה לבנות editor? אין מספיק editor-ים מצויינים ?
 
pagis - תודה -

שלום תודה רבה על התשובה שלך
בשל חוסר ניסיון וזמן בXML אני אנסה ללכת על השיטה של לזכור כל פעם משהו כמו 20 תוים אחרונים שהוקלדו, "ולהשמיד" את השאר, כי באמת אין לי צורך בהם. לשאלתך - למה לבנות editor... - זה פרויקט במסגרת קורס שלקחתי... אני בהחלט מסתפקת באלו שכבר קיימים
שוב -
המון תודה לך על הסבלנות והתשובה המושקעת! סופ"ש נפלא!
ושוב תודה לכולכם
 

pagis

New member
רק שימי לב

שאת מציבה ערכים חדשים בתוך אותו string קבוע ולא יוצרת כל הזמן אובייקטים חדשים ומשנה את הרפרנס. דרך אגב, כאן דווקא threading יכל לסייע, לדוגמה thread שרץ כל הזמן ומעדכן את הערכים בתוך הstring שאת מנתחת ו thread אחר שרץ כל הזמן ומנתח אותו, רק שימי לב לסנכרן אותם. האמת קיבלתי בזמנו הצעת עבודה לבנות editor דוט נטי (שהיה אמור להיות web-י) אבל איכשהו זה נראה לי כמו המון עבודה, מורכב יחסית (זה היה אמור להיות משהו שיתחרה בנוחות של editor-ים מסחריים) וממש, אבל ממש ממש, משעמם. כך שויתרתי על זה. אבל רק שתדעי שזה יכל להועיל לך בחיים איך שהוא. דרך אגב, איפה את עושה קורס ? ובהצלחה גדולה.
 

gilad g

New member
../images/Emo5.gif

כמה עבודה ל-GC
מערבולת ים, אני בכלל הייתי משתמש במערך של char כדי להשיג את מה שאת צריכה.
 
למעלה