PDA

View Full Version : سوال: خواندن اطلاعات خط مشخصی از فایل متنی



shahabbasic
شنبه 29 بهمن 1390, 20:12 عصر
من قبلا توی تاپیک آموزش (اعلانات سایت) این مطلب رو پیدا کرده ولی الان هرچی گشتم و سرچ کردم نتونستم پیداش کنم.
میشه بگید چجوری مثلا خط 6 فایل متنی رو بخونم؟

Veteran
شنبه 29 بهمن 1390, 20:26 عصر
من خودم از این استفاده میکنم و کار هم میکنه
اما روش دیگه ای هم اگه باشه من نمیدونم
اما این مشکلی نداره

x = Val(InputBox("line"))
Dim counter As Integer
Dim Str1ng As String
Open "C:\2.txt" For Input As #1
While Not (EOF(1))
Line Input #1, Str1ng
counter = counter + 1
If x = counter Then
Print Str1ng
End If
Wend
Close #1

_behnam_
شنبه 29 بهمن 1390, 20:34 عصر
سلام، میتونید هنگامی که فایل رو باز کردید متن رو بر اساس vbCrlf اسپلیت کنید و قسمت 5 رو مشاهده کنید

Veteran
شنبه 29 بهمن 1390, 20:36 عصر
سلام، میتونید هنگامی که فایل رو باز کردید متن رو بر اساس vbCrlf اسپلیت کنید و قسمت 5 رو مشاهده کنید
میشه نمونه کد بزارین ؟
تشکر

سید حمید حق پرست
شنبه 29 بهمن 1390, 21:20 عصر
سلام . از اینم میتونی استفاده کنی

Private Sub Command1_Click()
Open "c:\NumberPhone.txt " For Input As #1
While EOF(1) = False
ReDim Preserve my_struct(1 To counter) As struct
Input #1, my_struct(counter).strname, my_struct(counter).strlastname, my_struct(counter).strtel, my_struct(counter).strmob, my_struct(counter).strAddress
counter = counter + 1
Wend
Close #1
Text1.Text = my_struct(1).strname


If next_rec < counter - 1 Then
next_rec = next_rec + 1
Text1.Text = my_struct(next_rec).strname
ElseIf next_rec = counter - 1 Then
next_rec = 1
Text1.Text = my_struct(1).strname
End If
End Sub



موفق باشی


یا علی (ع)

shahabbasic
شنبه 29 بهمن 1390, 21:27 عصر
این روش ها به ذهن خودم هم رسیده بود اما ...
بچه ها بهتره بگردین همون چیزی رو که من یک بار به چشمم خورده بود رو پیدا کنید چون این روش های شما همه حلقه داره
حلقه باعث اتلاف وقت میشه ولی اون روشی که من مد نظرم هست اطلاعات یک خط رو بر اساس آدرسش میخوند که در نتیجه اتلاف وقتی در کار نیست

ASedJavad
شنبه 29 بهمن 1390, 23:54 عصر
حلقه باعث اتلاف وقت میشه ولی اون روشی که من مد نظرم هست اطلاعات یک خط رو بر اساس آدرسش میخوند که در نتیجه اتلاف وقتی در کار نیست
تا اونجایی که من اطلاع دارم برا خوندن اطلاعات از یه فایل در حالت کلی (با هر زبانی و در هر سیستمی) دو راه داری
1-از اول فایل شروع کنی به خوندن اطلاعات تا برسی به اونجایی که میخوای
2- بری به بایت n ام فایلت و از اونجا شروع کنی به خوندن فایل
اگه شما بدونی هر خطت مثلا 10 بایت طولشه، خب برا اینکه از خط 6 شروع کنی به خوندن، خیلی راحت میتونی از بایت پنجاهم بخونی
اما حالا که شما شماره بایت رو نمیدونی و فقط میدونی باید پنج تا کاراکتر نیو لاین رو پشت سر بذاری، تنها راهت اینه که از اول فایل شروع کنی به خوندن و یکی یکی بایت ها رو چک کنی و اگه به کاراکتر نیولاین رسیدی شمارندتو یکی اضافه کنی تا شمارندت بشه پنج و الی آخر
که این کار رو خود vb با تابع LineInput راحت کرده و فقط کافیه تو یه for شش مرحله ای شش بار این تابع رو فراخونی کنی که خط ششم بیاد دستت. که عملا vb در پس پرده اون کارو برات انجام میده
یا مثلا اول بیای کل فایل رو بخونی و بعد شروع کنی به پردازش مقادیر خونده شده که میشه همین راه حل پست سوم (که البته اون چیزی که ایشون گفتن برا فایل های بزرگ با شماره خط بزرگ یه خورده کار داره)

elimiz
یک شنبه 30 بهمن 1390, 14:13 عصر
این سورس در xp کار میکنه در seven کار نمیکنه
اگر امکان داره سورسی بزارین که در ویندوز 7 هم کار کنه.الان کسی xp نصب نمیکنه

سید حمید حق پرست
یک شنبه 30 بهمن 1390, 14:25 عصر
این سورس در xp کار میکنه در seven کار نمیکنه
اگر امکان داره سورسی بزارین که در ویندوز 7 هم کار کنه.الان کسی xp نصب نمیکنه

سلام

ویندوز من سون هست . خوب هم کار میکنه . حتما یه جای کارت میلنگه . الان سورسرو مینویسم برات میزارم

سید حمید حق پرست
یک شنبه 30 بهمن 1390, 15:31 عصر
اینم سورس :
http://s1.picofile.com/file/7306921719/Red_Text.rar.html
موفق باشی


یا علی (ع)

elimiz
دوشنبه 01 اسفند 1390, 21:47 عصر
سلام دوست من
اگر امکان داره فایل رو در برنامه نیس اپ کنید لینکتون از کار افتاده
ممنون میشم

سید حمید حق پرست
شنبه 06 اسفند 1390, 16:56 عصر
من خودم از این استفاده میکنم و کار هم میکنه
اما روش دیگه ای هم اگه باشه من نمیدونم
اما این مشکلی نداره

x = Val(InputBox("line"))
Dim counter As Integer
Dim Str1ng As String
Open "C:\2.txt" For Input As #1
While Not (EOF(1))
Line Input #1, Str1ng
counter = counter + 1
If x = counter Then
Print Str1ng
End If
Wend
Close #1


سلام . کسی از دوستان میشه این کد رو ویرایش کنن طوری که تو برنامه خودکار یک خط رو بخونه . تا کاربر نتونه دستی خط رو وارد کنه تو کد نویسی خودمون بهش بگیم مثلا خط اولرو بخون

ممنون

یا علی (ع)

سید حمید حق پرست
شنبه 06 اسفند 1390, 17:05 عصر
آخرش بدستش آوردم :
Dim cl$
Open "text.txt" For Input As #1
Do While EOF(1) = False
Line Input #1, cl$
Text2.Text = cl$
Loop
Close #1

سید حمید حق پرست
شنبه 06 اسفند 1390, 17:09 عصر
اما کار نکرد:گریه: . اساتید محترم لطفا کمکم کنید

ASedJavad
شنبه 06 اسفند 1390, 20:59 عصر
شما دقیقا میخواین چکار کنید؟
این کدی که نوشتین میاد تموم خط های یه فایل رو پشت سر هم میخونه و میریزه تو تکست باکس (که من اصلا نمی دونم این کار به چه دردی میخوره)
اگه منظورتون همون سوال دوستمونه (خوندن مثلا خط ششم از یه فایل) از این کد استفاده کنید:

Open "c:\text.txt" For Input As #1
Dim a As String
For i = 1 To 6
Line Input #1, a
Next
Text1.Text = a
Close #1

elimiz
چهارشنبه 10 اسفند 1390, 16:23 عصر
سلام دوست عزیز
امکان داره سورسی بزارید که متن یک فایل تکست رو از ادرسC:/my.txt بخونه و در text1.text قرار بده ؟
البته توی ویندوز سون هم کار بکنه. چون تا الان 20 تا تست کردن توی ایکس پی کار کرد اما در ویندوز هفت نه
ممنون

سید حمید حق پرست
چهارشنبه 10 اسفند 1390, 17:11 عصر
سلام بفرما دوست عزیز

فایل my.txt رو در درایو c قرار بده بعد پروژه رو اجرا کن (میتونی فایل هم کنار برنامه قرار بدی و از اونجا بخونی ولی باید کد رو ویرایش کنی)

موفق باشی



یا علی (ع)

elimiz
پنج شنبه 11 اسفند 1390, 18:00 عصر
دستت درد نکنه داداش.
اما یک ایراد داره
وقتی متن چندین خط هست.یعنی 60 خط هست نشون نمیده
من میخوام یک فایل تکست که بیشتر از 30 لاین هست رو توی text1 نشون بده.
سورس شما فقی یک لاین رو نشون میده

سید حمید حق پرست
پنج شنبه 11 اسفند 1390, 18:29 عصر
سلام
شرمنده الان متوجه شدم
بفرماید اینم سورس

موفق باشید


یا علی (ع)

elimiz
پنج شنبه 11 اسفند 1390, 23:39 عصر
داداش این سورس که گذاشتین اصلا کار نمیکنه. خودتون یه تست کنید. ممنون دستت درد نکنه
وقتی اجرا میکنم هنگ میکنه

shahabbasic
جمعه 12 اسفند 1390, 00:35 صبح
بفرمایید درستش کردم
دانلود (http://www.up.98ia.com/images/wwf2niw3n8vpht63vf8.zip)

سید حمید حق پرست
جمعه 12 اسفند 1390, 01:15 صبح
این کار میکنه داداش . (قبلی هم تو سیستم خودم کار میکرد . قبل از قرار دادن اینها اول امتحان میکنم . فایل رو در درایو سی بنداز (my.txt رو میگم)


موفق باشی



یا علی (ع)

سید حمید حق پرست
جمعه 12 اسفند 1390, 01:47 صبح
بفرمایید درستش کردم
دانلود (http://www.up.98ia.com/images/wwf2niw3n8vpht63vf8.zip)

درست کار نمیکنه :

83569

ولی سور بالا که قرار دادم 100% کار میکنه .( سورسهای قبل هم تو سیستم خودم جواب داد )


یا علی (ع)

shahabbasic
جمعه 12 اسفند 1390, 11:59 صبح
خب به خاطر اینه که شما در نوت پد از چپ به راست نوشتی و من Right to left تکس باکس رو true کردم

سید حمید حق پرست
جمعه 12 اسفند 1390, 14:14 عصر
خب به خاطر اینه که شما در نوت پد از چپ به راست نوشتی و من Right to left تکس باکس رو true کردم

83579
چه رایت تو لفت فال باشه چه نباشه و تو نوتپد هم از راست بنویسی یا از چپ باز همینطوریه

elimiz
جمعه 12 اسفند 1390, 14:58 عصر
اقا دستتون درد نکنه. زحمت کشیدین مرسی. مشکل حل شد