PDA

View Full Version : خواندن از فایل متنی با دستور input



king ag
سه شنبه 12 مهر 1390, 21:59 عصر
سلام به همه دوستان عزیز
وقتبه خیر
یک سوال در مورد خوندن فایل متنی داشتم
اگر به سوالات پیش آزممون بیان دقت کرده باشید یک فایل متنی برای فایل ورودی میده
من زیاد با دستور input کار نکردم
وقتی با دستور input با حلقه همه خط هاش رو میخونم، اگر نوشته شده مثلا:
سلام خداحافظ
این میخونه فقط خداحافظ
وقتی از line input استفاده کرم مشکلش این بود که اصلا vbcrlf هارو لحاظ نمیکرد
یعنی همو تو یک خط مینوشت
لطفا اهنماییم کنید هر خط رو چطور درست بخونم
خیلی ممنون ازهمگی
موفق باشید

MohammadGh2011
سه شنبه 12 مهر 1390, 22:08 عصر
سلام عليکم
دوست عزيز من منظورتون رو درست متوجه نشدم
منظورتون اينه که تابع Inputbox رو ميخوايد بدونيد چه طوريه؟


موفق باشيد

just4froum
سه شنبه 12 مهر 1390, 22:50 عصر
با سلام

از کد زیر استفاده کنید امیدوارم مشکلتون حل بشه
Private Sub Command1_Click()
Dim myText() As String
Open "C:\myText.txt" For Input As #1
myText = Split(Input(LOF(1), 1), vbCrLf)
Close #1
End Sub

موفق باشید

returnx
چهارشنبه 13 مهر 1390, 10:13 صبح
دقت کنید این بخاطر اینکه فایل تصادفی ورودی که اونا تولید میکنن با زبان C++ هست و از n\ استفاده میکنند توضیحی که خود بیان گذاشته:

همچنین توجه داشته باشید برای خواندن سطر به سطر فایلهای متنی، دستورات استاندارد VB6 دو حالت‫ (Cr (\r و (CrLf (\r\n ‬را به عنوان انتهای سطر (end-of-line) قبول می کنند اما در تمام فایل های ورودی مسابقه، (Lf (\n مشخص کننده انتهای سطر می باشد. به همین دلیل شما با دستور Line Input نمی توانید سطر به سطر فایلهای ورودی مسابقه را بخوانید. برای رفع این موضوع یک procedure ساده با VB6 نوشته شده است که فایل ورودی را گرفته و آن به شکل مناسب ذخیره می کند. کافیست این procedure را در ابتدای برنامه خود قرار دهید و نام فایل ورودی را به آن ارسال کنید.
procedure :

' Changes all EOL (end-of-line) to CrLf. for more information visit: http://en.wikipedia.org/wiki/Newline
Public Sub ConvertNewLineInFile(ByVal FileName As String)
Dim FileNum As Integer
FileNum = FreeFile

Dim Buffer As String

On Error GoTo ConvertNewLineInFile_Error

Open FileName For Binary Access Read Write As FileNum

Buffer = String(LOF(FileNum), 0)
Get FileNum, , Buffer

Buffer = Replace(Buffer, vbLf, vbCr)
Buffer = Replace(Buffer, vbCr & vbCr, vbCr)
Buffer = Replace(Buffer, vbCr & vbCr, vbCr)
Buffer = Replace(Buffer, vbCr, vbCrLf)

Put FileNum, 1, Buffer

ConvertNewLineInFile_Error:
Close FileNum
End Sub
شما باید قبل از اینکه فایل ورودی رو باز کنید و شروع بخوندن کنید یکبار این Function رو فراخونی کنید تا فرمت EOL فایل ها به صورت VBCRLF تبدیل بشه تا مشکلی نداشته باشید...