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

חזרתי לנסות לשמור מידע בקובץ.. הצלחתי בערך.. צריך עזרה...


IlanF

Recommended Posts

חבר עזר לי ואני מצליח לקרוא מקובץ, אבל לא לקרוא ולרשום ביחד...

StreamReader x = new StreamReader(game_path_txt.Text + "\\settings.ini");
StreamWriter f = new StreamWriter(game_path_txt.Text + "\\settings.ini");

if (x.ReadLine().IndexOf("ORIGINAL") >= 0)
{
f.Write("MODDED");
radioButton1.Checked = false;
radioButton2.Checked = true;
}
x.BaseStream.Seek(0, SeekOrigin.Begin);
if (x.ReadLine().IndexOf("MODDED") >= 0)
{
f.Write("ORIGINAL");
radioButton1.Checked = true;
radioButton2.Checked = false;


}

יש לי את הקוד הזה... אבל אני מקבל שגיאה שהקובץ נמצא בשימוש.. דבאג הראה שזה משהו עם השורה השנייה...

מה אני אמור לעשות?

קישור לתוכן
שתף באתרים אחרים

אתה יוצר שגיאה באיך שאתה משתמש בקובץ שם, תעשה FileStream חדש לקובץ תדאג שההרשאה תהיה ReadWrite ואז תיצור streamReader ו streamWriter ששניהם יכולים לקבל בתור פרמטר FileStream

קישור לתוכן
שתף באתרים אחרים

אני מקבל 2 שגיאות... כנראה לא רשמתי נכון...

The best overloaded method match for 'System.IO.FileStream.FileStream(string, System.IO.FileMode)' has some invalid arguments

Argument '2': cannot convert from 'System.IO.FileAccess' to 'System.IO.FileMode'

FileStream y = new FileStream(game_path_txt.Text + "\\settings.ini", FileAccess.ReadWrite);

קישור לתוכן
שתף באתרים אחרים

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

..

נ.ב למה חזרת ל INI?? הרי ברור שיהיה לך יותר קשה ומסורבל לעבוד איתו לעומת XML

קישור לתוכן
שתף באתרים אחרים

לדרוס את הקובץ?! :P

...

חבר הביא לי דרך לשמור לכל קובץ, אז החלטתי שזה יהיה INI... אני יכול לשנות לTXT אם אני ירצה...[br]פורסם בתאריך: 2.09.2007 בשעה 15:53:35


לדרוס את הקובץ?! מה הכוונה? איך אני עושה את זה? ???
קישור לתוכן
שתף באתרים אחרים

הוא רושם לי שכבר קיים משתמש בשם Y...

      FileStream y = new FileStream(game_path_txt.Text + "\\settings.ini", FileMode.OpenOrCreate);
StreamReader z = new StreamReader(y);
StreamWriter c = new StreamWriter(y);
if (z.ReadLine() == "ORIGINAL")
{
c.Write("MODDED");
radioButton1.Checked = false;
radioButton2.Checked = true;
}
z.BaseStream.Seek(0, SeekOrigin.Begin);

if (z.ReadLine() == "MODDED")
{
c.Write("ORIGINAL");
radioButton1.Checked = true;
radioButton2.Checked = false;
}
c.Close();
z.Close();

איפה אני בכלל אמור להוסיף את זה?

קישור לתוכן
שתף באתרים אחרים

מה זאת אומרת "קיים משתמש בשם y"?

ואמרתי לך להשתמש ב-Create, לא OpenOrCreate.

מה שאתה צריך לעשות זה ככה:

א. לפתוח את הקובץ לקריאה (FileMode.Open).

ב. לקרוא את כל הנתונים שאתה צריך.

ג. לסגור את הקובץ.

ד. לפתוח את הקובץ מחדש לכתיבה (FileMode.Create).

ה. לכתוב את כל הנתונים שצריך.

ו. לסגור את הקובץ.

זה עושה את העבודה הרבה יותר פשוטה מאשר לנסות לקרוא ולכתוב בו זמנית.

קישור לתוכן
שתף באתרים אחרים

אני צריך שתשנה לי את הקוד כדי שיוכל לעבוד..

      FileStream y = new FileStream(game_path_txt.Text + "\\settings.ini", FileMode.OpenOrCreate);
StreamReader z = new StreamReader(y);
StreamWriter c = new StreamWriter(y);
if (z.ReadLine() == "ORIGINAL")
{
c.Write("MODDED");
radioButton1.Checked = false;
radioButton2.Checked = true;
}
z.BaseStream.Seek(0, SeekOrigin.Begin);

if (z.ReadLine() == "MODDED")
{
c.Write("ORIGINAL");
radioButton1.Checked = true;
radioButton2.Checked = false;
}
c.Close();
z.Close();

הכוונה היא שבמקרה שרשום בקובץ settings.ini את המילה "ORIGINAL", הוא יחליף אותה ל"MODDED" ויפעיל את radioButton2 ויכבה את radioButton1

במקרה ורשום בקובץ "MODDED" שישנה ל-"ORIGINAL" ויכבה את radioButton2 וידליק את radioButton1

מקווה שהבנתה.. וזה חשוב שיהיה עם הקובץ settings.ini כי כבר חלק עשוי עם הקובץ הזה... כל מה שצריך ליהיות רשום בקובץ זה "ORIGINAL" או "MODDED"

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...