[plt-scheme] Loading at runtime
On Oct 6, Matt Jadud wrote:
>
> (define (dyn-file fname)
> (let-values ([(base name x)
> (split-path
> (find-executable-path
> (find-system-path 'exec-file)))])
>
> (case (system-type)
> [(macosx)
> (simplify-path
> (build-path base 'up 'up 'up fname))]
> [(windows) '...])))
>
> That feels ugly for what I'm trying to do.
You can add some sanity checking -- make sure that (on OSX) you're
climbing up a directory tree that has the right shape, like making
sure that you start from something that looks like
`*.app/Contents/MacOS'.
> That said, this gets me to a datafile that a user is going to
> modify, and the application will load data from that file at
> run-time. And for now, I'm "hard-coding" the fact that, no matter
> where the application lives, the datafile will be adjacent to the
> executable. Perhaps I should just pop open a 'File Open' dialog and
> be done with it... but this will do for the task at hand, I think.
Sounds like you expect your users to change the data outside of your
application -- and requiring that they do that in the application's
directory seems like a bad idea. Much worse than popping up a dialog,
or asking them to drop the file onto some widget.
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://www.barzilay.org/ Maze is Life!