Re: Serious bug in MatchQ causes crashes and incorrect results
- To: mathgroup at smc.vnet.net
- Subject: [mg28325] Re: Serious bug in MatchQ causes crashes and incorrect results
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Wed, 11 Apr 2001 02:01:03 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <9aem2g$nc6@smc.vnet.net> <X4cz6.18682$uR4.183244@ralph.vnet.net> <9argur$q6s@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
> The reason I use 'Abort[]' is to stop the Kernal from generating
> hundreds of useless error messages after I know something has failed.
> I have used it quite a bit on both the Mac and under Solaris with no
> problems. I sometimes do use 'Throw[]'.
I still can't understand how the functions are written. If
some test failed the function should terminate smooth with
some nice message.
>
> The file names are generally being entered manually, not returned by
> 'FileNames[]' so they do need to be checked.
And a
getFile[fname_String] /;
> The approach of checking
> argument patterns and aborting if they don't match came out of
> difficulty in defining both complex patterns and default values for the
> arguments. I still don't understand the syntax for some of the
> suggested solutions. If I could define complex patterns with default
> arguments could I then define a version of the function to match all
> invalid argument patterns such as:
>
> getFile[___]:= CompoundExpression[Message[]; Throw[]/Abort[] ]; ?
>
> -Jeff DuMonthier
What is so complicate to define a function
like
getFile[]:=getFile["someSupidFilename.dat"]
getFile[fname_String]/; StringMatchQ[fname,"*.dat"]:=Print["Filename:
",fname]
or what is so difficult to make a test like
getFile[fname_String, filepatt_, dirs_:{$HomeDirectory}] :=
Module[{flst},
flst =
Select[FileNames[filepatt, dirs], StringMatchQ[#, "*" <> fname]
&];
If[flst === {},
Message[getfile::notfound, fname];
Return[$Failed]
];
ByteCount /. FileInformation[fname]
]
Can you tell me "what" you don't understand ?
Regards
Jens