PDA

View Full Version : خواندن از فایل متنی



مجتبی کریمی
جمعه 10 فروردین 1386, 11:32 صبح
یه همچین فایلی دارم که می خواهم از توش اطلاعاتش رو بخونم


Input Data File ................... inpFile.inp
Number of Junctions................ 691
Number of Reservoirs............... 32
Number of Tanks ................... 0
Number of Pipes ................... 1343
Number of Pumps ................... 0
Number of Valves .................. 0
Headloss Formula .................. Hazen-Williams
Hydraulic Timestep ................ 1.00 hrs
Hydraulic Accuracy ................ 0.001000
Maximum Trials .................... 40
Quality Analysis .................. None
Specific Gravity .................. 1.00
Relative Kinematic Viscosity ...... 1.00
Relative Chemical Diffusivity ..... 1.00
Demand Multiplier ................. 1.00
Total Duration .................... 0.00 hrs
Reporting Criteria:
All Nodes
No Links


Node Results:
----------------------------------------------
Elevation Head Chemical
Node ft ft mg/L
----------------------------------------------
1 15.00 15.00 0.00
2 14.00 15.00 0.00
3 13.00 15.00 0.00
4 12.00 15.00 0.00
5 11.00 15.00 0.00
43 5.00 14.61 0.00
44 4.00 14.61 0.00
45 3.00 14.61 0.00
46 2.00 14.61 0.00
47 1.00 14.61 0.00
48 0.00 14.61 0.00
49 15.00 14.42 0.00
50 14.00 14.42 0.00
51 13.00 14.42 0.00


چطوری میشه با سرعت زیاد این فایل رو خوند و اطلاعاتشو گرفت؟
در ضمن سر تیتر جدول ممکنه عوض بشه.
با تشکر

omid_Ahmadi
جمعه 10 فروردین 1386, 11:55 صبح
منظورت از سرعت زیاد چیه؟
برای خوندن فایل توی .NET می تونی از شیئ My.Computer.FileSystem استفاده کنی.
مثال (http://msdn2.microsoft.com/en-us/a77w6kkx(VS.80).aspx)

مجتبی کریمی
جمعه 10 فروردین 1386, 18:16 عصر
ببخشید منظورم این نیست.
مثلا من یه متغییر دارم به نام NumberofJunctions می خواهم به خوانده این فایل مقدار این متغییر برابر 691 (خط دوم) قرار بگیره.
و یا یک آرایه هست که می خواهم با خواندن متن مقادیر به ترتیب تو اون قرار بگیره.


A(1).Elevation = 15
A(1).Head = 15
A(2).Elevation = 14
.
.
.ممنون.

omid_Ahmadi
جمعه 10 فروردین 1386, 19:14 عصر
منظورتون رو واضح تر بگید،
اگر می خواهید داده ای رو از فایل توی یه متغییر قرار بدید، راه دیگه ای بجز خوندن فایل وجود نداره!

مجتبی کریمی
جمعه 10 فروردین 1386, 19:30 عصر
درسته ! ولی خوب چطوری ؟
فرض کنید می خواهیم عدد 691 رو از خط دوم ؛عدد 32 رو از خط سوم؛ عدد 0 رو از خط چهارم و به همین ترتیب بقیه رو بخونیم و در درون متغیر هایی قرار بدهیم.
اگه میشه واسه همین داده های اول صفحه یه مثال بزنید.
ممنون

omid_Ahmadi
جمعه 10 فروردین 1386, 19:34 عصر
برای این موارد می تونید به مثالی که در پست 2 لینک دادم مراجعه کنید.

__H2__
شنبه 11 فروردین 1386, 12:29 عصر
سلام
میبخشید ولی من وفهمم! چرا از بانک اطلاعاتی استفاده نمیکنید؟ مثلاَ mdb
چه اصراری هست متنی باشه و خودتان درستش کرده باشید؟
تازه اگر هم بخواهید متنی باشد، آنرا با قالب INI درست کنید تا بتوانید از API های آماده کمک بگیرید.

مجتبی کریمی
شنبه 11 فروردین 1386, 15:29 عصر
یه فایل dll هست مربوط به برنامه EPANET .
این فایل Dll یه فایل متنی به عنوان ورودی می گیره و یه فایل متنی به عنوان خروجی داره.
من باید اون فایل خروجی رو بخونم تا بتونم ازش تو برنامم استفاده کنم.
من یه Sub نوشتم که این کارو انجام میده ولی خوب کار نمی کنه یعنی کارش زیادی طول میکشه.
می خواهم این کار سریع تر و اصولی تر انجام بشه.

farazjoonam
شنبه 11 فروردین 1386, 23:36 عصر
ببین این به کارت میاد؟

Dim r As IO.StreamReader
r = New IO.StreamReader("c:\Download File\downlist.txt")
While (r.Peek() > -1)
ListBox1.Items.Add(r.ReadLine)
End While
r.Close()

Alireza_Salehi
یک شنبه 12 فروردین 1386, 10:52 صبح
با توجه به ماهیت ترتیبی بودن فایل متنی برای خوندن یک قسمت خاص حتما باید متن قبل از اون خونده بشه ، البته اگر فایل فرمت خاصی داشته باشه کار خیلی راحت تر میشه
مثلا:
1. مقادیر با فاصله (یا کاراکتر مشخص دیگری) از هم جدا شده باشند - قسمت دوم فایل شما
2. بعد از تعداد کاراکتر مشخص مقادیر مورد نظر وجود داشته باشند - قسمت اول فایل شما

در هر دو مورد بهتره اول با متد ReadLine یک خط خونده بشه ، در حالت اول با متد Split کلاس String مقادیر از هم جدا بشن و بعد با TryParse به داده مورد نظر تبدیل بشن ، در مورد دو هم بعد از خوندن یک خط با متد SubString اطلاعات زاید حذف بشن و بعد با TryParse به داده مورد نظر تبدیل بشن.


مثلا برای خوندن این فایل :

1 15.00 15.00 0.00
2 14.00 15.00 0.00
3 13.00 15.00 0.00
4 12.00 15.00 0.00
5 11.00 15.00 0.00
43 5.00 14.61 0.00
44 4.00 14.61 0.00
45 3.00 14.61 0.00
46 2.00 14.61 0.00
47 1.00 14.61 0.00
48 0.00 14.61 0.00
49 15.00 14.42 0.00
50 14.00 14.42 0.00
51 13.00 14.42 0.00

تقریبا کد این طوری میشه:


Dim tr As TextReader = File.OpenText("file path")
tr.ReadLine()
Dim seperator() As Char = {" "}
Dim line As String
Dim columns() As String
Dim r(3) As Single
line = tr.ReadLine
While Not line Is Nothing
columns = line.Split(seperator, StringSplitOptions.RemoveEmptyEntries)
Single.TryParse(columns(0), r(0))
Single.TryParse(columns(1), r(1))
Single.TryParse(columns(2), r(2))
Single.TryParse(columns(3), r(3))
line = tr.ReadLine
End While


یاد cin و cout بخیر!

rezaei manesh
یک شنبه 03 شهریور 1387, 11:59 صبح
سلام
من یک فایل با فرمت زیر می خوام درست کنم الان مشکل من شمارنده اول اون هست


1:728352134354322322
2:223433443322222443
3:222234222454222222
4:097844444467888899

من چطور بدون این که فایل رو از اول تا اخر بخونم می تونم خط آخر رو بخونم و شماره آخر رو از توش استخراج کنم
یا تعداد خطها رو هم اگه داشته باشم خوبه
و بعد در نهایت می خوام از شماره x تا شماره y رو هم از این فایل بخونم؟

ehsan_najafi
یک شنبه 21 فروردین 1390, 01:09 صبح
سلام.کسی میتونه طریقه کال کردن epanet تو یه زبان برنامه نویسی مثل مطلب رو به من بگه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟