Jump to content

Issue writing and loading file


Recommended Posts

This should be very easy but I can't figure out what is going on. Maybe I've been looking at the code for too long but I've tried everything I can think of. I am creating and saving "projects" in txt format.

This is the function to save the project. I used to have the function overwrite the file but I have now tried to completely delete the file before writing but still no success. The file saving works great. Opening the file after saving will not work.

Func SaveProject()
$tProjectContents = ""
$tProjectPath = FileSaveDialog("Save Project As...", @ScriptDir & "\Projects", "Text files (*.txt)", -1, GUICtrlRead($hProjectList))
If @error Or $tProjectPath = "" Then
  MsgBox(0, "", "Invalid project path")
  SetError(1)
  Return ""
EndIf
 
$tProjectContents &= "[ACCNAME]" & GUICtrlRead($hAccInput) & "[/ACCNAME]" & @CRLF
$tProjectContents &= "[ACCPASS]" & GUICtrlRead($hAccPassInput) & "[/ACCPASS]" & @CRLF
 
   If FileExists($tProjectPath) Then
 FileDelete($tProjectPath)
 MsgBox(0, "", "Deleted " & $tProjectPath)
   EndIf
   $hOutFile = FileOpen($tProjectPath, 10) ;2=overwrite previous contents + 8=create path
   FileWrite($hOutFile, $tProjectContents)
   FileFlush($hOutFile)
   FileClose($hOutFile)
   If @error Then
 MsgBox(0, "", "Error saving file?")
   Else
 Zout("Saved new project: " & $tProjectPath)
 MsgBox(0, "", "Saved " & $tProjectPath)
 $splitFileName = StringSplit($tProjectPath, '\')
 $tFileName = $splitFileName[$splitFileName[0]]
 
 ;check if filename isnt already there
 If _GUICtrlListBox_FindString($hProjectList, $tFileName, True) = -1 Then
GUICtrlSetData($hProjectList, $tFileName & "|")
 EndIf
   EndIf
 EndFunc

 

This is the function I use to read the files. FileExists returns false for files that are clearly there! $fContents is empty! 

;get project option
Func GetOption($tFile, $OPT)
   If FileExists($tFile) Then
 MsgBox(0, $tFile, "file exists!")
   Else
 MsgBox(0, $tFile, "file " & $tFile & " doesn't exist :\")
   EndIf
$hFile = FileOpen($tFile, 0)
$fContents = FileRead($hFile)
MsgBox(0, "debug", "fContents: " & @crlf & $fContents)
FileClose($hFile)
 
$tOpt = _StringBetween($fContents, '[' & $OPT & ']', '[/' & $OPT & ']')
If @error Then
  Return "errorsz"
    Else
  Return $tOpt[0]
    EndIf
 EndFunc

 

Hopefully there is some glaring issue with my code or there is some better way of flushing the file :s. Thanks in advance!

Link to comment
Share on other sites

Without a script to reproduce your issue, and not just snippets, we can't help much.

I'd suggest adding a message box on the Func GetOption, so you can see exactly what the value of $tFile is...maybe you are only including the name, and not the path.

IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...