ABA


"מצאתי תבעיה שגורמת לקריסת התוכנה שלי אבל לא מצליח לפתור"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15818 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15818
Nexus

   10:04   14.04.10   
אל הפורום  
  מצאתי תבעיה שגורמת לקריסת התוכנה שלי אבל לא מצליח לפתור  
 
  

public string GetKey(string key)
{
// string value_of_each_key;
string key_of_each_line;
string line;
int index;
string key_value;
key_value = null;
sr = new StreamReader(Options_File);
while (null != (line = sr.ReadLine()))
{

index = line.IndexOf("=");


// value_of_each_key = line.Substring(index+1);

if (index >= 1)
{
key_of_each_line = line.Substring(0, index);
if (key_of_each_line == key)
{
key_value = line.Substring(key.Length + 1);
}
}
else
{
}

}
sr.Close();
return key_value;
}



                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  הבעיה היא השורה הזו : Nexus 14.04.10 10:11 1
  אתה חייב לסדר את הנושאים שלך, אני תמיד מוצא קושי בלקרוא אותם X= ronen333  14.04.10 16:01 2
     צודק בדיוק פתרתי עכשיו את הבעיה : Nexus 14.04.10 16:11 3
  שמע דבר אחד אני לא מצליח להבין.. VeNom  14.04.10 16:31 4
     לא הבאתי את זה פה אבל : Nexus 14.04.10 18:28 5
     לא הבאתי את כל הקוד מקור לפה : Nexus 14.04.10 18:31 6

       
Nexus

   10:11   14.04.10   
אל הפורום  
  1. הבעיה היא השורה הזו :  
בתגובה להודעה מספר 0
 
  

sr = new StreamReader(Options_File);


הוא לא מצליח לפתוח את הקובץ וכותב לי שגיאה file is beung used by another process
שהקובץ בשימוש .


לפני הפונקציה של ה GETKEY יש את הקונסטרקטור שם אני וצר את הקובץ Options_File .
מה שקורה שפעם ראשונה שמישהו מפעיל את התורנה הוא מייצר את הקובץ הזה ואז משום מה הקובץ נשאר פתוח ואז הוא חוזק ל FORM1 ומקבל את ה GETKEY :

זה הקונסטרקטור של הקלאס Options_File

 
public OptionsFile(string settings )
{

if (File.Exists(settings))
{

}
else
{
File.Create(settings);
Options_File = settings;

}

path_exe = Path.GetDirectoryName(Application.LocalUserAppDataPath);


}

ואז הוא חוזר ל FORM1 מקבל את ה GETKEY וחוזר ל פונקציה של ה GETKEY מנסה לפתוח את הקובץ אבל כותב שהוא בשימוש .

ככה זה ב FORM1 בקונסטרקטור :


setting_file = new OptionsFile(settings_dir + settings_file);

sf=setting_file.GetKey("Set-Directory");


אז מה שקורה ב FORM1 אני מכריז על שם הקובץ בקונסטרקטור.
בקלאס של ה Options_File אני יוצר בקונסטרקטור את ה קובץ .
אז ב FORM1 הוא קורא ומקבל את GETKEY ואז חוזר ל קלאס של Options_File נכנס לפונקציה של ה GetKey ומנסהל פתוח את הקובץ לקריאה ושם הוא זורק שגיאה כי הקובץ כביכול בשימוש עדיין אחרי שהוא נוצר .
כאילו הוא נוצר ונשאר פתוח .

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

איך אני סוגר את הקובץ אחרי שהוא יוצר אותו ?

תודה.




                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   16:01   14.04.10   
אל הפורום  
  2. אתה חייב לסדר את הנושאים שלך, אני תמיד מוצא קושי בלקרוא אותם X=  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   16:11   14.04.10   
אל הפורום  
  3. צודק בדיוק פתרתי עכשיו את הבעיה :  
בתגובה להודעה מספר 2
 
   דבר ראשון אתה צודק אני מעכשיו במקרה הצורף אאסוף אירועים ואתן אותם בלינק אחד מסודר .

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

תודה רבה .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   16:31   14.04.10   
אל הפורום  
  4. שמע דבר אחד אני לא מצליח להבין..  
בתגובה להודעה מספר 0
 
   השורה שגורמת לך לבעיות היא:

sr = new StreamReader(Options_File);

אבל לא הגדרת משתנה בשם sr בכל התוכנית..מאיזה טיפוס הוא ומאיפה הוא הגיע?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   18:28   14.04.10   
אל הפורום  
  5. לא הבאתי את זה פה אבל :  
בתגובה להודעה מספר 4
 
   ה SR מוגדר ברמת הקלאס של הקלאס Options_File


namespace DannyGeneral
{
class OptionsFile
{
/*----------------------------------------
* P R I V A T E V A R I A B L E S
* ---------------------------------------*/

/*---------------------------------
* P U B L I C M E T H O D S
* -------------------------------*/
string path_exe;
string temp_settings_file;
string temp_settings_dir;
string Options_File;
StreamWriter sw;
StreamReader sr;

והבעיה הייתה ברמת הקונסטרקטור של הקלאס Options_File בפעם הראשונה שמישהו מפעיל את התוכנה אחרי התקנה הוא יוצר קובץ settings.txt והקובץ נשאר פתוח .

לכן עשיתי :

public OptionsFile(string settings )
{

if (File.Exists(settings))
{

}
else
{
FileStream fs=File.Create(settings);

fs.Close();
}

path_exe = Path.GetDirectoryName(Application.LocalUserAppDataPath);
Options_File = settings;

}

השתמשתי ב FILESTREAM וסגרתי את הקובץ אחרי שנוצר עם ה FS .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   18:31   14.04.10   
אל הפורום  
  6. לא הבאתי את כל הקוד מקור לפה :  
בתגובה להודעה מספר 4
 
   הוא ארוך ומחולק לכמה קבצים .
אבל אני יכול להביא את הקוד אם תרצו .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net