Ace08 Posted October 7, 2010 Posted October 7, 2010 (edited) uhm guys, in my script i opened 2 text files but the problem is i can't get my 1st file to close... here is a part of my script expandcollapse popup;========================================================================== ;For .Rep file ;========================================================================== $RepFile = $ShortCode & stringright($YYYY,2) & Chr(64 + $MM) & $DD & $Fseq & ".REP" $RepPath = "C:\Script\Test\" & $TDate & "\" & $RepFile FileOpen($RepPath, 10) FileWriteLine($RepPath, "DBO") FileWriteLine($RepPath, "Date: " & _datetomonth($MM) & " " & $DD & "," & $YYYY) FileWriteLine($RepPath, "Summary List") FileWriteLine($RepPath, " ") FileWriteLine($RepPath, "Filename:" & $FileName) FileWriteLine($RepPath, " ") FileClose($RepPath) $ReadFile = FileOpen($UnFilePath, 0) If $ReadFile = -1 Then MsgBox(0, "Error", $FileName & "Unable to open file.") Exit EndIf While 1 $BRSline = FileReadLine($ReadFile) If @error = -1 Then ExitLoop $SFile = stringSplit($BRSline ,chr(34) & "," & chr(34),1) $SRefNo = $SFile[1] $SRefNo = StringReplace($SRefNo, chr(34), "") $SRemName = $SFile[3] $SBeneName = $SFile[7] $SAmt = $SFile[19] $SCur = $SFile[18] $SAccNo = $SFile[17] $SBnkCode = $SFile[15] if $strcountPHP = "" then $strcountPHP = "0" endif if $strcountUSD = "" then $strcountUSD = "0" endif FileOpen($RepPath) FileWriteLine($RepPath, "RNo. :" & $SRefNo) FileWriteLine($RepPath, "ReName :" & $SReName) FileWriteLine($RepPath, "BeName :" & $SBeName) FileWriteLine($RepPath, "At :" & $SAt) FileWriteLine($RepPath, "No. :" & $SNo) FileWriteLine($RepPath, "BaName :" & $SBCode) FileWriteLine($RepPath, " ") FileClose($RepPath) WEnd FileClose($ReadFile) msgbox(0,"", FileClose($ReadFile)) if $TotAmtPHP = "" then $TotAmtPHP = "0" endif if $TotAmtUSD = "" then $TotAmtUSD = "0" endif FileOpen($RepPath) FileWriteLine($RepPath, " ") FileWriteLine($RepPath, "Summary :") FileWriteLine($RepPath, "") FileWriteLine($RepPath, "Total Number of Records (1) : " & $strcount1) FileWriteLine($RepPath, "Total Number of Records (2) : " & $strcount2) FileWriteLine($RepPath, "Total Amount 1 : " & $TotAmt1) FileWriteLine($RepPath, "Total Amount 2 : " & $TotAmt2) FileClose($RepPath) ;========================================================================== ;For .sum file ;========================================================================== $sumName = $ZipFile & ".SUM" $sumPath = "C:\Script\Test\" & $TDate & "\" & $sumName FileOpen($sumPath, 10) FileWriteLine($sumPath, "TCode=" & $LocCode) FileWriteLine($sumPath, "TID=" & $ShortCode & stringright($YYYY,2) & Chr(64 + $MM) & $DD & $Fseq) FileWriteLine($sumPath, "Total1=" & $TotAmt1) FileWriteLine($sumPath, "Total2=" & $TotAmt2) FileWriteLine($sumPath, "1Count=" & $strcount1) FileWriteLine($sumPath, "2Count=" & $strcount2) FileClose($sumPath) as you can see i added a message box after WEnd but the value i am getting is 0 so basicaly the file is still open... i need to close that file to be able to encrypt it.... any help would be apreciated, thanks Edited October 7, 2010 by Ace08 Work smarter not harder.My First Posted Script: DataBase
wakillon Posted October 7, 2010 Posted October 7, 2010 (edited) $RepPath = "C:\Script\Test\" & $TDate & "\" & $RepFile FileOpen($RepPath, 10) FileWriteLine($RepPath, "DBO") FileWriteLine($RepPath, "Date: " & _datetomonth($MM) & " " & $DD & "," & $YYYY) FileWriteLine($RepPath, "Summary List") FileWriteLine($RepPath, " ") FileWriteLine($RepPath, "Filename:" & $FileName) FileWriteLine($RepPath, " ") FileClose($RepPath)Replace FileOpen($RepPath, 10) by $_file = FileOpen($RepPath, 10)And FileClose($RepPath) by FileClose($_file) See the helpfile for this Functions. Edited October 7, 2010 by wakillon AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts
Ace08 Posted October 7, 2010 Author Posted October 7, 2010 thanks a lot wakillon i was able to encrypt the file, i thought that i could do a fileopen without declaring it to a variable since i would just do a fileclose on the same file, thanks again just one more question, after doing your change even if i was able to sucessfuly close the file the msgbox still showed a value of 0 and from what i've read 0 means that fileclose failed. sorry if i'm asking too much its just that i want to understand how autoit works Work smarter not harder.My First Posted Script: DataBase
wakillon Posted October 7, 2010 Posted October 7, 2010 Post your modified script would be helpfull ! AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts
Ace08 Posted October 7, 2010 Author Posted October 7, 2010 expandcollapse popup;========================================================================== ;For .Rep file ;========================================================================== $RepFile = $ShortCode & stringright($YYYY,2) & Chr(64 + $MM) & $DD & $Fseq & ".REP" $RepPath = "C:\Script\Test\" & $TDate & "\" & $RepFile $_RepPath = FileOpen($RepPath, 10) FileWriteLine($RepPath, "DBO") FileWriteLine($RepPath, "Date: " & _datetomonth($MM) & " " & $DD & "," & $YYYY) FileWriteLine($RepPath, "Summary List") FileWriteLine($RepPath, " ") FileWriteLine($RepPath, "Filename:" & $FileName) FileWriteLine($RepPath, " ") FileClose($_RepPath ) $ReadFile = FileOpen($UnFilePath, 0) If $ReadFile = -1 Then MsgBox(0, "Error", $FileName & "Unable to open file.") Exit EndIf While 1 $BRSline = FileReadLine($ReadFile) If @error = -1 Then ExitLoop $SFile = stringSplit($BRSline ,chr(34) & "," & chr(34),1) $SRefNo = $SFile[1] $SRefNo = StringReplace($SRefNo, chr(34), "") $SRemName = $SFile[3] $SBeneName = $SFile[7] $SAmt = $SFile[19] $SCur = $SFile[18] $SAccNo = $SFile[17] $SBnkCode = $SFile[15] if $strcountPHP = "" then $strcountPHP = "0" endif if $strcountUSD = "" then $strcountUSD = "0" endif $_RepPath2 = FileOpen($RepPath) FileWriteLine($RepPath, "RNo. :" & $SRefNo) FileWriteLine($RepPath, "ReName :" & $SReName) FileWriteLine($RepPath, "BeName :" & $SBeName) FileWriteLine($RepPath, "At :" & $SAt) FileWriteLine($RepPath, "No. :" & $SNo) FileWriteLine($RepPath, "BaName :" & $SBCode) FileWriteLine($RepPath, " ") FileClose($_RepPath2) WEnd FileClose($ReadFile) msgbox(0,"", FileClose($ReadFile)) if $TotAmtPHP = "" then $TotAmtPHP = "0" endif if $TotAmtUSD = "" then $TotAmtUSD = "0" endif $_RepPath3 = FileOpen($RepPath) FileWriteLine($RepPath, " ") FileWriteLine($RepPath, "Summary :") FileWriteLine($RepPath, "") FileWriteLine($RepPath, "Total Number of Records (1) : " & $strcount1) FileWriteLine($RepPath, "Total Number of Records (2) : " & $strcount2) FileWriteLine($RepPath, "Total Amount 1 : " & $TotAmt1) FileWriteLine($RepPath, "Total Amount 2 : " & $TotAmt2) FileClose($_RepPath3) ;========================================================================== ;For .sum file ;========================================================================== $sumName = $ZipFile & ".SUM" $sumPath = "C:\Script\Test\" & $TDate & "\" & $sumName $_SumPath = FileOpen($sumPath, 10) FileWriteLine($sumPath, "TCode=" & $LocCode) FileWriteLine($sumPath, "TID=" & $ShortCode & stringright($YYYY,2) & Chr(64 + $MM) & $DD & $Fseq) FileWriteLine($sumPath, "Total1=" & $TotAmt1) FileWriteLine($sumPath, "Total2=" & $TotAmt2) FileWriteLine($sumPath, "1Count=" & $strcount1) FileWriteLine($sumPath, "2Count=" & $strcount2) FileClose($_SumPath) here it is i've just added a variable with $_ in the beggining. Work smarter not harder.My First Posted Script: DataBase
trung0407 Posted October 7, 2010 Posted October 7, 2010 which fileclose exactly? you got 3 filecloses
wakillon Posted October 7, 2010 Posted October 7, 2010 It's the way you use for get the return value ! wrong : FileClose($ReadFile) msgbox(0,"", FileClose($ReadFile)) good : $_FileClose = FileClose($ReadFile) msgbox(0,"", $_FileClose) AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts
Ace08 Posted October 8, 2010 Author Posted October 8, 2010 i see thanks again wakillon... so in order to get the functions return value i must 1st assign it to a variable Work smarter not harder.My First Posted Script: DataBase
AdmiralAlkex Posted October 8, 2010 Posted October 8, 2010 i see thanks again wakillon... so in order to get the functions return value i must 1st assign it to a variable No you don't, the error was that you tried to close something that already was closed. You should already know that as you have: $RepFile = $ShortCode & stringright($YYYY,2) & Chr(64 + $MM) & $DD & $Fseq & ".REP" And lots of other places where you use the return value directly. .Some of my scripts: ShiftER, Codec-Control, Resolution switcher for HTC ShiftSome of my UDFs: SDL UDF, SetDefaultDllDirectories, Converting GDI+ Bitmap/Image to SDL Surface
jaberwacky Posted October 8, 2010 Posted October 8, 2010 (edited) Change this: $_RepPath3 = FileOpen($RepPath) FileWriteLine($RepPath, " ") FileWriteLine($RepPath, "Summary :") FileWriteLine($RepPath, "") FileWriteLine($RepPath, "Total Number of Records (1) : " & $strcount1) FileWriteLine($RepPath, "Total Number of Records (2) : " & $strcount2) FileWriteLine($RepPath, "Total Amount 1 : " & $TotAmt1) FileWriteLine($RepPath, "Total Amount 2 : " & $TotAmt2) FileClose($_RepPath3) To this: $_RepPath3 = FileOpen($RepPath) FileWriteLine($_RepPath3, " ") FileWriteLine($_RepPath3, "Summary :") FileWriteLine($_RepPath3, "") FileWriteLine($_RepPath3, "Total Number of Records (1) : " & $strcount1) FileWriteLine($_RepPath3, "Total Number of Records (2) : " & $strcount2) FileWriteLine($_RepPath3, "Total Amount 1 : " & $TotAmt1) FileWriteLine($_RepPath3, "Total Amount 2 : " & $TotAmt2) FileClose($_RepPath3) And this: $_SumPath = FileOpen($sumPath, 10) FileWriteLine($sumPath, "TCode=" & $LocCode) FileWriteLine($sumPath, "TID=" & $ShortCode & StringRight($YYYY, 2) & Chr(64 + $MM) & $DD & $Fseq) FileWriteLine($sumPath, "Total1=" & $TotAmt1) FileWriteLine($sumPath, "Total2=" & $TotAmt2) FileWriteLine($sumPath, "1Count=" & $strcount1) FileWriteLine($sumPath, "2Count=" & $strcount2) FileClose($_SumPath) To this: $_SumPath = FileOpen($sumPath, 10) FileWriteLine($_SumPath, "TCode=" & $LocCode) FileWriteLine($_SumPath, "TID=" & $ShortCode & StringRight($YYYY, 2) & Chr(64 + $MM) & $DD & $Fseq) FileWriteLine($_SumPath, "Total1=" & $TotAmt1) FileWriteLine($_SumPath, "Total2=" & $TotAmt2) FileWriteLine($_SumPath, "1Count=" & $strcount1) FileWriteLine($_SumPath, "2Count=" & $strcount2) FileClose($_SumPath) In fact, just replace the entire bloody lot: expandcollapse popup;========================================================================== ;For .Rep file ;========================================================================== $RepFile = $ShortCode & StringRight($YYYY, 2) & Chr(64 + $MM) & $DD & $Fseq & ".REP" $RepPath = "C:\Script\Test\" & $TDate & "\" & $RepFile $_RepPath = FileOpen($RepPath, 10) FileWriteLine($_RepPath, "DBO") FileWriteLine($_RepPath, "Date: " & _DateToMonth($MM) & " " & $DD & "," & $YYYY) FileWriteLine($_RepPath, "Summary List") FileWriteLine($_RepPath, " ") FileWriteLine($_RepPath, "Filename:" & $FileName) FileWriteLine($_RepPath, " ") FileClose($_RepPath) $ReadFile = FileOpen($UnFilePath, 0) If $ReadFile = -1 Then MsgBox(0, "Error", $FileName & "Unable to open file.") Exit EndIf While 1 $BRSline = FileReadLine($ReadFile) If @error = -1 Then ExitLoop $SFile = StringSplit($BRSline, Chr(34) & "," & Chr(34), 1) $SRefNo = $SFile[1] $SRefNo = StringReplace($SRefNo, Chr(34), "") $SRemName = $SFile[3] $SBeneName = $SFile[7] $SAmt = $SFile[19] $SCur = $SFile[18] $SAccNo = $SFile[17] $SBnkCode = $SFile[15] If $strcountPHP = "" Then $strcountPHP = "0" EndIf If $strcountUSD = "" Then $strcountUSD = "0" EndIf $_RepPath2 = FileOpen($RepPath) FileWriteLine($_RepPath2, "RNo. :" & $SRefNo) FileWriteLine($_RepPath2, "ReName :" & $SReName) FileWriteLine($_RepPath2, "BeName :" & $SBeName) FileWriteLine($_RepPath2, "At :" & $SAt) FileWriteLine($_RepPath2, "No. :" & $SNo) FileWriteLine($_RepPath2, "BaName :" & $SBCode) FileWriteLine($_RepPath2, " ") FileClose($_RepPath2) WEnd FileClose($ReadFile) MsgBox(0, "", FileClose($ReadFile)) If $TotAmtPHP = "" Then $TotAmtPHP = "0" EndIf If $TotAmtUSD = "" Then $TotAmtUSD = "0" EndIf $_RepPath3 = FileOpen($RepPath) FileWriteLine($_RepPath3, " ") FileWriteLine($_RepPath3, "Summary :") FileWriteLine($_RepPath3, "") FileWriteLine($_RepPath3, "Total Number of Records (1) : " & $strcount1) FileWriteLine($_RepPath3, "Total Number of Records (2) : " & $strcount2) FileWriteLine($_RepPath3, "Total Amount 1 : " & $TotAmt1) FileWriteLine($_RepPath3, "Total Amount 2 : " & $TotAmt2) FileClose($_RepPath3) ;========================================================================== ;For .sum file ;========================================================================== $sumName = $ZipFile & ".SUM" $sumPath = "C:\Script\Test\" & $TDate & "\" & $sumName $_SumPath = FileOpen($sumPath, 10) FileWriteLine($_SumPath, "TCode=" & $LocCode) FileWriteLine($_SumPath, "TID=" & $ShortCode & StringRight($YYYY, 2) & Chr(64 + $MM) & $DD & $Fseq) FileWriteLine($_SumPath, "Total1=" & $TotAmt1) FileWriteLine($_SumPath, "Total2=" & $TotAmt2) FileWriteLine($_SumPath, "1Count=" & $strcount1) FileWriteLine($_SumPath, "2Count=" & $strcount2) FileClose($_SumPath) Edited October 8, 2010 by jaberwocky6669 Helpful Posts and Websites: AutoIt3 Variables and Function Parameters MHz | AutoIt Wiki | Using the GUIToolTip UDF BrewManNH | Can't find what you're looking for on the Forum?
Ace08 Posted October 8, 2010 Author Posted October 8, 2010 (edited) @AdmiralAlkex oh yeah now i understand, i have closed the file before and placing it inside a msgbox will also do a close and since th file is closed i would realy be getting a 0 for a value thanks a lot for explaining @jaberwocky6669 thanks for the code jaberwocky6669 the code i have is working but after doing what you told me all i am getting is a bank file? any explanation or did i messed up again here is what i did expandcollapse popup;========================================================================== ;For .Rep file ;========================================================================== $RepFile = $ShortCode & stringright($YYYY,2) & Chr(64 + $MM) & $DD & $Fseq & ".REP" $RepPath = "C:\Script\Test\" & $TDate & "\" & $RepFile $_RepPath = FileOpen($RepPath, 10) FileWriteLine($_RepPath , "DBO") FileWriteLine($_RepPath , "Date: " & _datetomonth($MM) & " " & $DD & "," & $YYYY) FileWriteLine($_RepPath , "Summary List") FileWriteLine($_RepPath , " ") FileWriteLine($_RepPath , "Filename:" & $FileName) FileWriteLine($_RepPath , " ") FileClose($_RepPath ) $ReadFile = FileOpen($UnFilePath, 0) If $ReadFile = -1 Then MsgBox(0, "Error", $FileName & "Unable to open file.") Exit EndIf While 1 $BRSline = FileReadLine($ReadFile) If @error = -1 Then ExitLoop $SFile = stringSplit($BRSline ,chr(34) & "," & chr(34),1) $SRefNo = $SFile[1] $SRefNo = StringReplace($SRefNo, chr(34), "") $SRemName = $SFile[3] $SBeneName = $SFile[7] $SAmt = $SFile[19] $SCur = $SFile[18] $SAccNo = $SFile[17] $SBnkCode = $SFile[15] if $strcountPHP = "" then $strcountPHP = "0" endif if $strcountUSD = "" then $strcountUSD = "0" endif $_RepPath2 = FileOpen($RepPath) FileWriteLine($_RepPath2, "RNo. :" & $SRefNo) FileWriteLine($_RepPath2, "ReName :" & $SReName) FileWriteLine($_RepPath2, "BeName :" & $SBeName) FileWriteLine($_RepPath2, "At :" & $SAt) FileWriteLine($_RepPath2, "No. :" & $SNo) FileWriteLine($_RepPath2, "BaName :" & $SBCode) FileWriteLine($_RepPath2, " ") FileClose($_RepPath2) WEnd FileClose($ReadFile) msgbox(0,"", FileClose($ReadFile)) if $TotAmtPHP = "" then $TotAmtPHP = "0" endif if $TotAmtUSD = "" then $TotAmtUSD = "0" endif $_RepPath3 = FileOpen($RepPath) FileWriteLine($_RepPath3, " ") FileWriteLine($_RepPath3, "Summary :") FileWriteLine($_RepPath3, "") FileWriteLine($_RepPath3, "Total Number of Records (1) : " & $strcount1) FileWriteLine($_RepPath3, "Total Number of Records (2) : " & $strcount2) FileWriteLine($_RepPath3, "Total Amount 1 : " & $TotAmt1) FileWriteLine($_RepPath3, "Total Amount 2 : " & $TotAmt2) FileClose($_RepPath3) ;========================================================================== ;For .sum file ;========================================================================== $sumName = $ZipFile & ".SUM" $sumPath = "C:\Script\Test\" & $TDate & "\" & $sumName $_SumPath = FileOpen($sumPath, 10) FileWriteLine($_SumPath, "TCode=" & $LocCode) FileWriteLine($_SumPath, "TID=" & $ShortCode & stringright($YYYY,2) & Chr(64 + $MM) & $DD & $Fseq) FileWriteLine($_SumPath, "Total1=" & $TotAmt1) FileWriteLine($_SumPath, "Total2=" & $TotAmt2) FileWriteLine($_SumPath, "1Count=" & $strcount1) FileWriteLine($_SumPath, "2Count=" & $strcount2) FileClose($_SumPath) Edited October 8, 2010 by Ace08 Work smarter not harder.My First Posted Script: DataBase
jaberwacky Posted October 8, 2010 Posted October 8, 2010 No, it's my mistake actually. Revert to your previous code. Helpful Posts and Websites: AutoIt3 Variables and Function Parameters MHz | AutoIt Wiki | Using the GUIToolTip UDF BrewManNH | Can't find what you're looking for on the Forum?
Ace08 Posted October 8, 2010 Author Posted October 8, 2010 waaaah ok and thanks Work smarter not harder.My First Posted Script: DataBase
wakillon Posted October 8, 2010 Posted October 8, 2010 i see thanks again wakillon... so in order to get the functions return value i must 1st assign it to a variable Glad to help you ! AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts
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