Re: Opening a file - File Open Dialog spoils future code
- Posted by don cole <doncole at pacbell.??t> Jan 18, 2008
- 535 views
Matt Lewis wrote: > > CChris wrote: > > > > I am only saying two things: > > 1/ since ex.err may land in folders from where no Eu rogram was ever run, > > other > > processes must interfere in some cases (in case of a crash? I don't know); > > 2/ since use of the current directory is so confusing for practical use > > under > > Windows, and since there is such an excessive concern about avoiding > > confuion > > in the language, I think relying on what the "current directory" happens to > > be in an only mildly deterministic way (from the user standpoint) should be > > actively discouraged in some way. > > I've run a simple test, and the c-library and win32 routines seem > interchangeable, which isn't surprising, since the runtime library probably > just wraps the win32 functions. Now we need to find the magic that disrupts > this behavior: > }}} <eucode> > include dll.e > include file.e > include machine.e > object void > constant > k32 = open_dll("kernel32.dll"), > GetCurrentDirectoryA = define_c_func( k32, "GetCurrentDirectoryA", {C_INT, > C_POINTER}, C_INT ), > SetCurrentDirectoryA = define_c_func( k32, "SetCurrentDirectoryA", > {C_POINTER}, C_INT ) > > function pwd() > atom buf, chars > sequence d > buf = allocate( 1025 ) > chars = c_func( GetCurrentDirectoryA, {1024, buf}) > d = peek( buf & chars ) > free( buf ) > return d > end function > > procedure cd( sequence d ) > atom buf, ok > > buf = allocate_string( d ) > ok = c_func( SetCurrentDirectoryA, {buf}) > free(buf) > end procedure > > procedure checkdir() > printf(1, "current_dir: '%s'\n", {current_dir()}) > printf(1, "Win32: '%s'\n\n", {pwd()}) > end procedure > > puts(1, "The starting current_dir():\n") > checkdir() > > puts(1, "Calling chdir(\"..\")\n") > void = chdir("..") > > checkdir() > > puts(1, "Calling cd(\"..\")\n") > cd( ".." ) > > checkdir() > </eucode> {{{ Matt, I tried your code: cd("C:") finename= filename = getOpenFileName( MainWin, -- parent window "", -- no default name { "Dialog Flags", {OFN_ALLOWMULTISELECT}, "Rar Files", "*.TXT", -- text files "All Files", "*.*" } ) -- everything else And the dialog still opens in 'My Documents'? chkdir() prints 'C:\' Don Cole