Jump to content

FileOpenDialog and Dir


Wolfx128
 Share

Recommended Posts

I wam writing a program to let me change settings for my other program.

When I open a file with the FileOpenDialog Method I am completely change my save directory, yet I don't want to have to go through the hassel of makeing a FileSaveDialog to let me choose where to save it since I just want it to save to my current Dir.

Is there something I should do to keep me at my current dir, to find my current dir, or set my file to save at my current dir?

Func FindFile( $Target, $Title )
    $Found = FileOpenDialog( $Title, $Loc, "XML (*.xml)")
    If Not StringCompare($Found,"") = 0 Then
        $Found = StringTrimLeft($Found, StringInStr($Found, "\", 0 , -1))
        GUICtrlSetData( $Target, $Found )
    EndIf
EndFunc

The part include the FileOpenDialog.

Link to comment
Share on other sites

Not sure if I know exactly what you mean, but something along the lines of this?

If Not FileExists( @TempDir & "\test.txt" ) Then
    MsgBox(0, "test", "Test file not found... creating it at: " & @TempDir & "\test.txt")
    FileWrite( @TempDir & "\test.txt", 'setting1 = 0' & @CRLF & 'setting2 = 0')
EndIf

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 378, 215, 193, 125)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 361, 169)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("Save File", 104, 184, 161, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$file = FileOpenDialog('Choose a file to open', @TempDir, "test file (test.txt)", 1, 'test.txt', $Form1 )
If @error Then 
    MsgBox(0, "error", "FileOpenDialog error")
    Exit
EndIf
$FileData = FileRead( $file )
GUICtrlSetData( $Edit1, $FileData )

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            FileDelete( $file )
            FileWrite( $file, GUICtrlRead( $Edit1 ))
            MsgBox(0, "Test", "Settings changed." & @CRLF & "Click OK to reload file.")
            $FileData = FileRead( $file )
            GUICtrlSetData( $Edit1, $FileData )
    EndSwitch
WEnd
Link to comment
Share on other sites

Ok I think I may have messed up what I was saying...

But you have the general Idea. I am trying to make my file write to the same directory my program is running in. But I am loading an .XML from another folder.

When I load the .XML it changes my directory to save my "Setup.ini" in the same directory as my ".xml" not in the location of my program.

Link to comment
Share on other sites

Then I guess this would be a demonstration of what I think you are asking:

If Not FileExists( @TempDir & "\test.txt" ) Then
    MsgBox(0, "test", "Test file not found... creating it at: " & @TempDir & "\test.txt")
    FileWrite( @TempDir & "\test.txt", 'setting1 = 0' & @CRLF & 'setting2 = 0')
EndIf

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 378, 215, 193, 125)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 361, 169)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("Save File", 104, 184, 161, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$file = FileOpenDialog('Open the test file...', @TempDir, "test file (test.txt)", 1, 'test.txt', $Form1 )
$ss = StringSplit( $file, "\" )
$FileName = $ss[$ss[0]] ; Full new location with old filename = @ScriptDir & "\" & $FileName

If @error Then 
    MsgBox(0, "error", "FileOpenDialog error")
    Exit
EndIf
$FileData = FileRead( $file )
GUICtrlSetData( $Edit1, $FileData )

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            If FileExists( @ScriptDir & "\" & $FileName ) Then FileDelete( @ScriptDir & "\" & $FileName )
            FileWrite( @ScriptDir & "\" & $FileName, GUICtrlRead( $Edit1 ))
            MsgBox(0, "Test", "Settings changed." & @CRLF & @CRLF & "Click OK to reload file from new location:" & @CRLF & '(@ScriptDir & "\" & $FileName)' & @CRLF & @ScriptDir & "\" & $FileName)
            $FileData = FileRead( @ScriptDir & "\" & $FileName )
            GUICtrlSetData( $Edit1, $FileData )
            GUICtrlSetData( $Button1, 'Loaded From Script Directory' )
            GUICtrlSetState( $Button1, $GUI_DISABLE )
        EndSwitch
        Sleep(10)
WEndoÝ÷ Û­Øb±·¢az)©¢»ZÚZ®Ö®¶­sbb33c¶fÆRÒfÆT÷VäFÆörb33´÷VâFRFW7BfÆRâââb33²ÂFV×F"ÂgV÷C·FW7BfÆRFW7BçGBgV÷C²ÂÂb33·FW7BçGBb33²Âb33c´f÷&Ó¢b33c·72Ò7G&æu7ÆBb33c¶fÆRÂgV÷C²b3#²gV÷C²¢b33c´fÆTæÖRÒb33c·75²b33c·75³ÕÒ²gVÆÂæWrÆö6FöâvFöÆBfÆVæÖRÒ67&DF"fײgV÷C²b3#²gV÷C²fײb33c´fÆTæÖP

EDIT: Variable name typo in comment

Edited by danwilli
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...