درخواست سورس-باز كردن txt. در textbox

penta3

New Member
سلام
.اگه ميشه يك سورس براي من بنويسيد كه بشه بعد از اينه فورم لود شد يك فايل txt. در textbox كه باز بشه
كه بشه متن را ويرايش كرد و بعد همون جا ذخيره بشه !

ادرس txt. مثال : "Explan.txt\"
 
آخرین ویرایش:

the_king

مدیرکل انجمن
سلام
.اگه ميشه يك سورس براي من بنويسيد كه بشه بعد از اينه فورم لود شد يك فايل txt. در textbox كه باز بشه
كه بشه متن را ويرايش كرد و بعد همون جا ذخيره بشه !

ادرس txt. مثال : "Explan.txt\"

قسمت اول، موقع فراخوانی فرم در رخداد Form_Load متن موجود در فایل رو می خوانیم :
کد:
Private Sub Form_Load()
    On Error Resume Next
    Dim Text As String
    Open "C:\Explan.txt" For Input As #1
    Line Input #1, Text
    Close #1
    Text1.Text = Text
End Sub

در صورتی که فایل موجود نباشه یا خطا در دسترسی به فایل رخ بده با خطا برنامه متوقف میشه. به همین دلیل
ابتدای کد، سطر On Error Resume Next رو می نویسیم که از نمایش خطا جلوگیری بشه.

قسمت دوم، زمانی که فرم (پنجره) بسته بشه (با کلیک کردن روی ضربدر اش و یا ترکیب کلیدی Alt + F4) آنگاه
محتویات TextBox رو در فایل ذخیره می کنیم :
کد:
Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next
    Open "C:\Explan.txt" For Output As #1
    Print #1, Text1.Text
    Close #1
End Sub
 

A_123

Member
سلام
میگم دستور print با دستور put فرقی هم داره؟
2.بعد از for در موقع باز کردن فایل میتوان به جای input , از random و یا append هم استفاده کرد. اینها چه فرقی و چه تفاوت کاربردی ای با هم دارند؟
 

penta3

New Member
سلام
واقعا ممنونم كه وقت گذاشتيد و اين كد رو برام نوشتيد .
فقط من يك مشكل ديگه واسم پيش اومده كه سورس بالا فقط خط اول رو تو textbox مياره ! چي به اين سورس اضافه كنم كه حداقل 10 خط اول رو بتونه نشون بده .
مرسي
 

the_king

مدیرکل انجمن
سلام
میگم دستور print با دستور put فرقی هم داره؟
2.بعد از for در موقع باز کردن فایل میتوان به جای input , از random و یا append هم استفاده کرد. اینها چه فرقی و چه تفاوت کاربردی ای با هم دارند؟
دستور Print مناسب فایل های متنی است یعنی تعداد سطر که در هر کدوم عبارت هایی نوشته شده،
مثلا یک رشته یا چند عدد رو بصورت متن بنویسه.
اما Put مناسب فایل های باینری است، یعنی فایل رو بصورت یک مجموعه از بایت ها نه عبارت های رشته ای.

Input یک فایل متنی رو برای خوندن باز می کنه، فایلی که فقط برای خوندن باز میشه و قابل نوشتن نیست.

Random یک فایل باینری رو بصورت مجموعه ای از رکورد می بینه که رکورد ها طول ثابتی دارند، مثلا رکورد های
100 بایتی. در واقع محتویات فایل رو به چندین تکه با طول های مساوی می شکونه و فقط رکورد به رکورد فایل
رو پیمایش می کنه، نه بایت به بایت. هم برای خوندن بکار می بره و هم برای نوشتن.
بعضی از بانک اطلاعاتی های ساده مثل دفترچه تلفن رو می شه با این شیوه مدیریت کرد.

Append زمانی بکار می ره که بخواهیم به آخر یک فایل که قبلا اطلاعاتی توش ذخیره شده اطلاعاتی جدیدی
رو اضافه کنیم. مثلا چهار صفحه از یک کتاب رو در فایل ذخیره کردیم و حالا صفحه پنجم رو به انتهای فایل
اضافه می کنیم.
 

A_123

Member
سلام
واقعا ممنونم كه وقت گذاشتيد و اين كد رو برام نوشتيد .
فقط من يك مشكل ديگه واسم پيش اومده كه سورس بالا فقط خط اول رو تو textbox مياره ! چي به اين سورس اضافه كنم كه حداقل 10 خط اول رو بتونه نشون بده .
مرسي

فكر نكنم با اين دستورات بشه بيش از يه خط رو توي textbox بياري. حالا ادمين يه توضيحي بدن:rose:
 

A_123

Member
ادمین جان حالا که وقت گزاشتی, میشه جواب این سوال دوستمونو هم بدی لطفا
 

the_king

مدیرکل انجمن
سلام
واقعا ممنونم كه وقت گذاشتيد و اين كد رو برام نوشتيد .
فقط من يك مشكل ديگه واسم پيش اومده كه سورس بالا فقط خط اول رو تو textbox مياره ! چي به اين سورس اضافه كنم كه حداقل 10 خط اول رو بتونه نشون بده .
مرسي

فكر نكنم با اين دستورات بشه بيش از يه خط رو توي textbox بياري. حالا ادمين يه توضيحي بدن:rose:

ادمین جان حالا که وقت گزاشتی, میشه جواب این سوال دوستمونو هم بدی لطفا

زمانی که از دستور Line Input #1 استفاده میشه، کاراکتر ها تا بخشی خوانده می شوند که به کاراکتر های CR و LF
برسیم، که همان کاراکتر هایی هستند که با کلید Enter درج می شوند.

برای خواندن کل سطر ها چند روش رو میشه بکار برد.
روش اول، استفاده از Line Input های متوالی :
کد:
Private Sub Form_Load()
    On Error Resume Next
    Dim Text As String, Full As String
    Open "C:\Explan.txt" For Input As #1
    Do Until EOF(1)
        Line Input #1, Text
        Full = Full & IIf(Len(Full) = 0, "", vbCrLf) & Text
    Loop
    Close #1
    Text1.Text = Full
End Sub

روش دوم، خواندن یک مرحله ای کل فایل بصورت باینری :
کد:
Private Sub Form_Load()
    On Error Resume Next
    Dim Buffer() As Byte, Full As String
    Open "C:\Explan.txt" For Binary As #1
    If LOF(1) > 0 Then
        ReDim Buffer(0 To LOF(1) - 1)
        Get #1, , Buffer
        Full = StrConv(Buffer, vbUnicode)
    End If
    Close #1
    Text1.Text = Full
End Sub
 

جدیدترین ارسال ها

بالا