PDA

View Full Version : سوال: کار با فایل متنی و دستور File Open ؟



vb.civil
شنبه 01 تیر 1392, 12:43 عصر
سلام

من میخواستم در یک فایل متنی عبارتی رو با عبارت دیگه Replace کنم!
میتونم در فایل متنی عبارتی رو بنویسم و یا متنی رو بخونم اما نمیدنم چه جوری میشه عبارتی رو Replace کرد در فایل متنی.

ممنون./

mehran901
شنبه 01 تیر 1392, 12:53 عصر
با دستور replace ! ، سینتکس کاملش هم تو گوگل موجوده

vb.civil
شنبه 01 تیر 1392, 13:00 عصر
با دستور replace ! ، سینتکس کاملش هم تو گوگل موجوده

این دستور Replce رشته ی مورد نظر منو تولید میکنه اما میخوام ببینم جه جوری این رشته جدید رو با رشته ی قبلی در فایل متنی جایگزین کنم

منظورم اینه که یه رشته ی جدیدی رو که دارم چه جوری جای رشته ی قدیم در فایل متنی بنویسم ؟

مرسی

vb.civil
شنبه 01 تیر 1392, 13:14 عصر
دوستان به نظرتون این کد کار میکنه؟
من نتونستم باهاش کار کنم! از اینترنت پیدا کردم

Public Function ReplaceStringInFile(ByVal StrFileName As String, _
ByVal StrFind As String, ByVal strReplace As String) As String

Dim strTest As String


Open StrFileName For Binary As #1
strTest = Space(LOF(1))
Get #1, , strTest

strTest = Replace(strTest, StrFind, strReplace)
Put #1, , strTest
Close #1

ReplaceStringInFile = strTest

End Function

محسن واژدی
شنبه 01 تیر 1392, 13:59 عصر
دوستان به نظرتون این کد کار میکنه؟
من نتونستم باهاش کار کنم! از اینترنت پیدا کردم

Public Function ReplaceStringInFile(ByVal StrFileName As String, _
ByVal StrFind As String, ByVal strReplace As String) As String

Dim strTest As String


Open StrFileName For Binary As #1
strTest = Space(LOF(1))
Get #1, , strTest

strTest = Replace(strTest, StrFind, strReplace)
Put #1, , strTest
Close #1

ReplaceStringInFile = strTest

End Function
سلام علیکم
بله، منتها چون دسترسی باینری است بعد از دریافت محتوی اشاره گر به انتهای فایل منتقل میشه در نتیجه، تغییرات به انتهای فایل اضافه میشود
کد ویرایش شده زیر را بررسی کنید:
Public Function ReplaceStringInFile(ByVal StrFileName As String, _
ByVal StrFind As String, _
ByVal strReplace As String) As String

On Error Resume Next
Dim strTest As String

Open StrFileName For Binary As #1
strTest = Space(LOF(1))
Get #1, , strTest
Close #1
strTest = Replace(strTest, StrFind, strReplace)

SetAttr StrFileName, vbNormal: Kill StrFileName

Open StrFileName For Binary As #1
Put #1, , strTest
Close #1
ReplaceStringInFile = strTest

End Function

در کدبالا بعد از دریافت محتوی یکبار فایل بسته سپس قایل قدیمی حذف و بعد از تغییر رشته نتیجه جایگزین فایل قبلی میشه، البته میتوانستیم بعد از Get اشاره گر را به بالا منتقل کنیم منتها بنابردلایلی استفاده از این روش به صرفه نیست

موفق باشید

vb.civil
شنبه 01 تیر 1392, 14:20 عصر
مرسی دوست عزیز فکر کنم با این کد مشکلم حل بشه

فقط یک سوال:
فایل متنی من حجمش متغییر هست، ممکنه تعداد کاراکتر های موجود در فایل خیلی زیاد بشه!

آیا میتوان تمام آن را در متغییر strTest از نوع String قرار داد ؟

سوال بعدی این است که اجباری هست که فایل رو به صورت باینری باز کنیم ؟ نمیشه به صورت Input و Output باز کنیم ؟