مشکلی در خواندن سطر خاص از فایل متنی
سلام دوستان
من این مشکل رو نتونستم با جستجو حل کنم برا همین مجبور به ایجاد تاپیک شدم.
فرض کنید یه فایل متنی داریم با محتویات زیر :
کد HTML:
[Ripage]
0=Ripage1;1
1=Ripage2;1
[Courbes]
16=8.00;0
0=Ripage3;1
1=Ripage4;1
میخواستم مقدار Ripage1 و Ripage2 رو استخراج کنم...برای همین دستور زیر رو نوشتم :
TReader = new StreamReader(OpenFileDialog1.FileName);
FileName = OpenFileDialog1.FileName;
strLine = TReader.ReadLine();
while (!(strLine == null))
{
if (strLine.Contains("0=") )
{
string[] Ripage1 = strLine.Split('=');
textBox4.Text = Ripage1[1].Replace(";1", "");
}
if (strLine.StartsWith("1=") )
{
string[] Ripage2 = strLine.Split('=');
textBox5.Text = Ripage2[1].Replace(";1", "");
}
}
TReader.Close();
TReader = null;
اما خب طبیعیه که مقدار Ripage3 و Ripage4 رو خواهد داد...چگونه این دستورات رو ویرایش کنم تا مقدار Ripage1 و Ripage2 رو به ما بده؟(نمیخوام از regex استفاده کنم...چون کل پروژه با همین دستورات نوشته شده )
ممنون میشوم راهنمایی کنید
نقل قول: مشکلی در خواندن سطر خاص از فایل متنی
سلام، قبل از هر چیز آیا محتویات این فایل تغییر خواهد کرد یا خیر؟ یعنی بعدا سطرهای دیگه ای هم بهش اضافه میشن یا فقط همین 7 سطر هستش؟ و ایا شما در اینده هم فقط به محتویات بخش [Ripage] نیاز خواهید داشت؟؟
نقل قول: مشکلی در خواندن سطر خاص از فایل متنی
نقل قول:
نوشته شده توسط
mr.sirwan
سلام، قبل از هر چیز آیا محتویات این فایل تغییر خواهد کرد یا خیر؟ یعنی بعدا سطرهای دیگه ای هم بهش اضافه میشن یا فقط همین 7 سطر هستش؟ و ایا شما در اینده هم فقط به محتویات بخش [Ripage] نیاز خواهید داشت؟؟
جز اون سطرهای دیگرم هست.....و بقیه سطرها مقادیر Ripage1 و Ripage2 و Ripage3 و Ripage4 و...دارند که تغییر میکند
من بقیه سطرها رو تونستم دربیارم فقط چون 0= و 1= چندبار در بخش های دیگر هم تکرار شده برای همین در بخش
[Ripage] نتونستم مقدارشو بدست بیارم
نقل قول: مشکلی در خواندن سطر خاص از فایل متنی
این فایلتون از نوع INI هستش؟ برای فایل های ini یک dll هستش که به راحتی این مقادیر رو براتون برمیگردونه، دقیق یادم نیس اسم dll چی بود، من یه جستجویی توی فایل هام میکنم و بهتون خبر میدم
نقل قول: مشکلی در خواندن سطر خاص از فایل متنی
نقل قول:
نوشته شده توسط
mr.sirwan
این فایلتون از نوع INI هستش؟ برای فایل های ini یک dll هستش که به راحتی این مقادیر رو براتون برمیگردونه، دقیق یادم نیس اسم dll چی بود، من یه جستجویی توی فایل هام میکنم و بهتون خبر میدم
اره یه فایل ini هستش..:متفکر:ینی نمیشه با کدنویسی ساده اینو استخراج کرد؟
مثلا بیاییم شماره سطری که کلمه [Ripage] وجود داره رو پیدا کنیم بعد شماره سطر بعدیشو بخونیم تا مقدار رو بدست بیاوریم...ولی نمیدونم چطوری بنویسم کدشو
نقل قول: مشکلی در خواندن سطر خاص از فایل متنی
این کد رو همین الان تو محیط کنسول نوشتم، دیگه زحمت تبدیل و جایگذاری Console ها به textbox به عهده خودتون:
string section = "[Ripage]";
bool isFound = false;
while (strLine != null)
{
if (strLine.StartsWith("[") && strLine.EndsWith("]"))
{
isFound = strLine == section;
}
else
{
if (isFound)
{
if (strLine.Contains("0="))
{
string[] Ripage1 = strLine.Split('=');
Console.WriteLine(Ripage1[1].Replace(";1", ""));
}
if (strLine.StartsWith("1="))
{
string[] Ripage2 = strLine.Split('=');
Console.WriteLine(Ripage2[1].Replace(";1", ""));
}
}
}
strLine = reader.ReadLine();
}
نقل قول: مشکلی در خواندن سطر خاص از فایل متنی
نقل قول:
نوشته شده توسط
mr.sirwan
این کد رو همین الان تو محیط کنسول نوشتم، دیگه زحمت تبدیل و جایگذاری Console ها به textbox به عهده خودتون:
string section = "[Ripage]";
bool isFound = false;
while (strLine != null)
{
if (strLine.StartsWith("[") && strLine.EndsWith("]"))
{
isFound = strLine == section;
}
else
{
if (isFound)
{
if (strLine.Contains("0="))
{
string[] Ripage1 = strLine.Split('=');
Console.WriteLine(Ripage1[1].Replace(";1", ""));
}
if (strLine.StartsWith("1="))
{
string[] Ripage2 = strLine.Split('=');
Console.WriteLine(Ripage2[1].Replace(";1", ""));
}
}
}
strLine = reader.ReadLine();
}
متشکرم از شما...به هدفم رسیدم:لبخندساده:
فقط در مورد اون کتابخانه ای هم که اشاره کردید در صورتی که پیدا کردید ممنون میشم قرار بدید.
نقل قول: مشکلی در خواندن سطر خاص از فایل متنی
سلام
کلاس INIAccess
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
class INIAccess
{
[DllImport("kernel32.dll")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
public void INIWrite(string INIPath, string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, INIPath);
}
public string INIRead(string INIPath, string Section, string Key, string DefualtValue = "")
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, DefualtValue, temp, 255, INIPath);
return temp.ToString();
}
}
نقل قول: مشکلی در خواندن سطر خاص از فایل متنی
نقل قول:
نوشته شده توسط
shahryari
سلام
کلاس INIAccess
ممنون بابت قرار دادن این کلاس
اما درصورت امکان یک نمونه مثالی برای کار کردن با این کلاس دارید؟
نقل قول: مشکلی در خواندن سطر خاص از فایل متنی