vickerps Posted October 4, 2004 Posted October 4, 2004 Can anyone help me with this code I have to do a stringreplace on two lines in a text file. No matter what i try i cannot get it to work unless i duplicate the code and do the two diff stringreplace in each. I hope this make sense #include <file.au3> dim $temp ; ---------------------------------------------------------------------------- ; Script Start ; ---------------------------------------------------------------------------- _FileReadToArray( "C:\system.dfn", $temp ) For $n = 1 to $temp[0] $temp[$n]= StringReplace($temp[$n],"CRD*34*34*10*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00", "CRD*34*34*00*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00") FileWrite("tempfilename.txt",$temp[$n]) IF $n < $temp[0] THEN FileWrite("tempfilename.txt",@lf) Next FileCopy("tempfilename.txt","c:\system1.dfn",1) FileDelete("tempfilename.txt") _FileReadToArray( "C:\system1.dfn", $temp ) For $n = 1 to $temp[0] $temp[$n]= StringReplace($temp[$n],"CRD*37*37*10*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00", "CRD*37*37*00*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00") FileWrite("tempfilename.txt",$temp[$n]) IF $n < $temp[0] THEN FileWrite("tempfilename.txt",@lf) Next FileCopy("tempfilename.txt","c:\system1.dfn",1) FileDelete("tempfilename.txt")
konan Posted October 4, 2004 Posted October 4, 2004 I don't know what is C:\system1.dfn. I test another file and the result is ok. Is C:\system1.dfn exist in your driver? I don't have this file. You can have a debug to know if read it successful
vickerps Posted October 4, 2004 Author Posted October 4, 2004 Sorry didn't explain properly The code i poseted does works. However it kinda messy (duplication) I was just wondering if anyone can help me clear it up. The file isn't important. it can be any old file it just becomes a bit more complicated if you have to do more than 2 or more stringReplace on a file.
this-is-me Posted October 4, 2004 Posted October 4, 2004 dostuff(0) dostuff(1) func dostuff($num) if $num = 0 then $num = "" _FileReadToArray( "C:\system" & $num & ".dfn", $temp ) For $n = 1 to $temp[0] $temp[$n]= StringReplace($temp[$n],"CRD*37*37*10*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00", "CRD*37*37*00*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00") FileWrite("tempfilename.txt",$temp[$n]) IF $n < $temp[0] THEN FileWrite("tempfilename.txt",@lf) Next FileCopy("tempfilename.txt","c:\system" & $num & ".dfn",1) FileDelete("tempfilename.txt") endfunc Who else would I be?
Valik Posted October 4, 2004 Posted October 4, 2004 this-is-me, the long-ass number that is being replaced is actually two numbers. The first one is CRD*34... and the second is CRD*37...
this-is-me Posted October 4, 2004 Posted October 4, 2004 Sorry, didn't look that close. Who else would I be?
Matt @ MPCS Posted October 4, 2004 Posted October 4, 2004 I don't quite understand the general purpose of this function but I can suggest the following: #include <file.au3> ReplaceTextInFile($temp[$n],"CRD*34*34*10*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00", "CRD*34*34*00*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00", "c:\system0.cfn" ) ReplaceTextInFile($temp[$n],"CRD*37*37*10*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00", "CRD*37*37*00*0*15*15*0*0*0*0*00*18*00*00*00*00*22*01*00*18*00*00*00*00", "c:\system1.cfn" ) Func ReplaceTextInFile( $InputFile, $OrigString, $ChangeString, $OutputFile ) Local $temp, $n _FileReadToArray( $InputFile, $temp ) For $n = 1 to $temp[0] $temp[$n]= StringReplace( $temp[$n], $OrigString, $ChangeString ) FileWrite( "tempfilename.txt", $temp[$n] ) If $n < $temp[0] THEN FileWrite( "tempfilename.txt", @LF ) Next FileCopy( "tempfilename.txt", $OutputFile, 1 ) FileDelete( "tempfilename.txt" ) EndFunc I haven't tested it but the logic is there so if there are any bugs you shouldn't need to dig very far. Hope this helps. *** Matt @ MPCS
vickerps Posted October 5, 2004 Author Posted October 5, 2004 (edited) Thanks Mac @MCPS The code looks good to me. Wish i thought of it but i guess thats why im a beginer. Edited October 6, 2004 by vickerps
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now