Fa تغییر در فایل متنی

aryan261

New Member
سلام . دوستان من احتیاج به کدی دارم که یک فایل Text رو گرفته و خطوط خالی اون رو حذف کنه و کل خطوط فایل رو بگرده و در هر خطی که حرف D وجود داشت کل اون خط رو کپی کنه و زیر اون یک کپی از اون ایجاد کنه با این تفاوت که بجای حرف D حرف L رو جایگزین کنه
مثال :
arteewrw
rtuyytuiriuryityouiopupoipiop
ujtuweiuqrtquituwrtquiwqoiyDjghuiqgwriqw
ujtuweiuqrtquituwrtquiwqoiyLjghuiqgwriqw
tuitouiopt
euityui​
من سرچ کردم ، ی چیزایی پیدا کردم ولی چون کد نویسی بلد نیستم نتونستم کد های دوستان رو تغیییر بدم و کدی که خودم نیاز دارم رو ایجاد کنم ، از دوستان خواهش میکنم در صورت امکان کد رو برام قرار بدن . ممنون میشم :rose:
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
برای این کار میتونید از توابع زیر استفاده کنید

PHP:
POS(char$,string$)
StrCopy(string$,position,count)
StrDel(string$,position,count)
StrIns(string$,insert$,position)
StrSet(string$,position,char$)
StrChange(string$,replacethis$,hereby$)
StrToLine(filename$,string$,toline,overwrite)
StrToFile(filename$,string$,append,linefeed)
StrFromFile(filename$,fromline,numberoflines)
 

Aref_Alikhani

Well-Known Member
سلام دوست من...
یه کد براتون نوشتم که کارتون رو راه میندازه...
فقط توجه داشته باش که نتیجه در درایو F در فایل Result.txt ذخیره میشه که میتونی تغییرش بدی یا اینکه حتی براش یه Dialog Box بذاری...

PHP:
FileName$='F:\Result.txt'
OpenFile("txt Files (*.txt)|*.txt|All Files|*.*||","*.txt")
If (OpenFile$<>'') Then
lines=NOL(OpenFile$)
End
For i=1 To lines
Str$=StrFromFile(OpenFile$,i,1)
If (Str$<>'') Then
Str$=LOW(Str$)
pos=POS(d,Str$)
If (pos<>0) Then
Save=StrToFile(FileName$, Str$, TRUE, TRUE)
ReturnStr$=StrChange(Str$,'d','l')
Save=StrToFile(FileName$, ReturnStr$, TRUE, TRUE)
Else
Save=StrToFile(FileName$, Str$, TRUE, TRUE)
End
End
Next i
 
آخرین ویرایش:

Aref_Alikhani

Well-Known Member
سلام مجدد دوست من...
نمیدونم چرا پستتون رو حذف کردید من دیشب پست شما رو دیدم اما چون مشغول نوشتن گزارش هام شده بودم دیگه وقت نشد جواب بدم الان که اومدم دیدم حذفش کردید اما به هر حال من الان یه کد تازه براتون نوشتم:

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

PHP:
OpenFile("txt Files (*.txt)|*.txt|All Files|*.*||","*.txt")
If (OpenFile$<>'') Then
lines=NOL(OpenFile$)
End
For i=1 To lines
Str$=StrFromFile(OpenFile$,i,1)
If (Str$<>'') Then
fc=fc+1
Str$=LOW(Str$)
Str$[fc]=Str$
End
Next i
Save=StrToFile(OpenFile$,'',FALSE,FALSE)
For i=1 To fc
pos=POS(d,Str$[i])
If (pos<>0) Then
Save=StrToFile(OpenFile$, Str$[i], TRUE, TRUE)
ReturnStr$=StrChange(Str$[i],'d','l')
Save=StrToFile(OpenFile$, ReturnStr$, TRUE, TRUE)
Else
Save=StrToFile(OpenFile$, Str$[i],TRUE, TRUE)
End
Next i
MessageEx("Message","Finished!!")
**Coded by Aref_Alikhani
 

aryan261

New Member
دستت درد نکنه عارف جان که اینقدر محبت داری . ببخشید زمان امتحاناس من دیر متوجه جوابتون شدم .ممنونم از وقتی که گذاشتی . فقط اگه زحمتی نیست ی مشکلاتی دارم اگه لطف کنید ممنون میشم .:rose:

1- حرف D رو تو فایل مقصد l میکنه میخواستم اگه امکان داشته باشه حروف بزرگ در فایل مقصد ذخیره بشه یعنی L البته همیشه فایل مبدا حروف بزرگ انگلیسی هست مثل D , K , S و فایل مقصد هم باید حروف بزرگ باشه

2- از علامت ها نمیشه استفاده کرد .مثلا در فایل مقصد بجای حرف L کاراکتر - یا @ یا ! جایگزین حرف D بشه

من خیلی تلاش کردم که خودم انجام بدم و مزاحم شما نشم ولی چون کد نویسیم خیلی ضعیفه نتونستم
 
آخرین ویرایش:

Aref_Alikhani

Well-Known Member
سلام
نه دوست من چه زحمتی! شما لطف داری...ولی خب اگه کمی بیشتر تلاش کنی حتما موفق میشی...
نگاه کنید دوست من برای این کار کافیه در قطعه کد بالا خط 9 رو حذف کنید و در خط 15 به جای d شکل بزرگ اون یعنی D رو بذارید و در خط 18 به جای l و d شکل بزرگ اونها رو بذارید به علاوه به جای l و d میشه هر کاراکتری رو قرار داد و از این لحاظ مشکلی نیست.
یه توضیحی هم بدم احتمالا شما وقتی کد بالا رو تغییر می دادید خط 9 رو حذف نمی کردید خط نه کارش اینه که تمامی حروف یک رشته رو به حروف کوچیک تبدیل می کنه!!!
در ضمن کد بالا تمامی تغییرات رو در فایل مبدا ذخیره می کنه یعنی فایل مبدا و مقصد یکی هست اگه می خواید که اطلاعات در فایل دیگه ای ذخیره بشه هم می تونید کد بالا رو تغییر بدید و هم می تونید از کد اول استفاده کنید که اگه قصد شما این باشه ، کارایی کد اول بهتره چون درش از آرایه برای ذخیره سازی استفاده نشده و تمامی اطلاعات از خود فایلی که در روی دیسکت سخت ذخیره شده فراخوانی میشه.
 

aryan261

New Member
عارف جان برنامه خیلی خوب کار کرد ممنونم ازت ولی بعضی از فایل هایی که جدید بهم میدن d تنها نداره بعضی هاش dd و da هست که با مقدار d فرق داره و نباید مقدار l جیگزین اونها بشه . راهی هست که اگر برنامه به مقدار های dd و da رسید مقدار اونا رو با l تغییر نده و فقط با d تنها کار کنه. ممنون میشم اگه کمکم کنی
 

Aref_Alikhani

Well-Known Member
سلام
ببخشید کمی دیر جواب میدم این روزا اوضاع اینترنتم به هم ریخته بود و بعد از 2 – 3 دقیقه که از کانکت شدنم می گذشت دیس می شد.
خب این کاری که می گید به راحتی امکان پذیره ولی اگه رشته برای نمونه بذارید راحت تر کمکتون می کنم...


 

aryan261

New Member
دوست عزیزم ممنون از لطف شما ، چون وقتم کم بود و شما هم جواب نداده بودیم با اجازتون تو کدتون دست بردم و بالاخره درستش کردم چون رشته ها وقتی به حرف D میرسید به . ختم میشد و وقتی به DA ختم میشد به - تونستم با تغییر کد به


کد:
FileName$='C:\Documents and Settings\All Users\Desktop\1.txt'
OpenFile("txt Files (*.txt)|*.txt|All Files|*.*||","*.txt")
If (OpenFile$<>'') Then
lines=NOL(OpenFile$)
End
For i=1To lines
Str$=StrFromFile(OpenFile$,i,1)
If (Str$<>'') Then
pos=POS(D.,Str$)
If (pos<>0) Then
Save=StrToFile(FileName$, Str$, TRUE, TRUE)
ReturnStr$=StrChange(Str$,'D.','L.')
Save=StrToFile(FileName$, ReturnStr$, TRUE, TRUE)
Else
Save=StrToFile(FileName$, Str$, TRUE, TRUE)
End
End
Next i
فقط حرفهای D که احتیاج هست تغییر بدم و بقیه D ها بدونه تغییر میمونه . تا حالا مشکلی نداشته آیا کدی که در بالا هست مشکلی نداره؟

وقتی با داس چند فایل txt رو با هم ادغام میکنیم با فرمان copy *.txt A.txt به آخرین خط فایلی که در اثر ادغام بوجود آمده ی علامت فلش به سمت راست وجود داره آیا امکانش هست که اون علامت رو برنامه حذف کنه یا مثلا خط آخر که اون علامت رو داره از فایلمون حذف بشه.ممنون میشم اگه کمکم کنید :rose:
 
آخرین ویرایش:

Aref_Alikhani

Well-Known Member
سلام
این خیلی خوبه که خودتون کمی با کدها بازی کردین!!!...همین کارا مقدمه ای هست برای پیشرفت در کد نویسی!!
خب در مورد سوال اخیرتون باید بگم که بله با قطعه کد زیر خط آخر فایل حذف میشه...چه اون علامت فلش باشه چه نباشه...اگه اطمینان دارید که تمامی فایل های ادغام شده دارای اون علامت هستن از همین کد استفاده کنید در غیر این صورت بگید تا یه کد دیگه براتون بذارم.

PHP:
YourFileAddress$='F:\aref.txt'
GetLinesNum=NOL(YourFileAddress$)
Deleting=StrToLine(YourFileAddress$,'',GetLinesNum,TRUE)
 

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

بالا