Eric Chatonet wrote:

Hi Dave,

You are perfectly right: I missed this one.
So a reliable function could be:

getting close ... but not quite there yet, because of the issue of comma being an allowed character in file names. (I don't know if this applies to Mac - but I'm 99% sure it will, since this is a relatively common thing to do in Unix, so I'd expect the OSX file system to allow it).

If the Mac doesn't allow this, then your function is OK - but beware of the problem for any other operation you do on "the detailed files".
If Mac does allow commas in file names, then it causes two problems.

The first is easy - but rather dangerous. You cannot use "item 11" for the file creator - you should alway use "item -1". The same applies to all the items returned - you should use "item -10" for file size, rather than "item 2", etc.

However, this doesn't work as it should on Windows.
The docs say

    * The file's access permissions
    * The file's creator and file type (Mac OS and OS X only)
Any attribute that is not supported on the current system is reported as "0" (zero).

But in fact on Windows, the creator and file type (not supported) are set to empty, not "0". This is a real pain, because it means that you always have an empty last item - so the number of items is 10.
[Does the Mac ever return empty Creator and file type ?]

Therefore you need to add a check for the last character being comma, and if it is append some safe string (e.g. a space), before using the negative index numbers.

The second problem is rather more obscure - but if we want to claim to work in 100% of the cases, not 99.99..% we should cover it.

I believe you cannot use a "filter" to match any arbitrary filename you might be given.

filter ... pFileName & ",*"
 fails because    "name" and "name,date" both match pFileName = "name"
You might think you could depend on the fact that the files are alphabetic to always get the one you want first (I certainly did when I started writing this email), but you can't. Using the filename "a,11" will falsely match the file "a" if it happens to be 11 bytes long (or 110, or 11234, ...). Since "a" comes before "a,11" it will be the first one found.

You could try (I did !!) using the trick I saw from Richard a couple of weeks ago, using a complex filter expression to ensure the right number of items - e.g. filter ... pFileName & ",*,*,*,*,*,*,*,*,*,*" but that also fails the "a,11" case as above.

So I think you need to loop through them, checking the file name. But you cannot do as Dave suggested, and compare item 1 of each line against the file name, because that would fail to match a filename containing a comma that should match. You instead need to compare "item 1 to -11" (once you've done the above check for empty last item).

So we finish up with what I *think* is a truly reliable version

function CreatorAndType pFilePath
 local tDefaultFolder,tFile,tCreatorType, theLine, L, tNewFiles, tName
 -----
 if the platform <> "MacOs" then return "Error: filetype not  supported"
 put the defaultFolder into tDefaultFolder
 set the itemdel to slash
 set the defaultFolder to item 1 to -2 of pFilePath
 put urlDecode(the detailed files) into tFile
 put empty into tNewFiles
 put item -1 of pFilePath into tName
 set the itemDel to comma
 repeat for each line L in tFile
   put L into theLine
   if the last char of theLine = comma then put space after theLine
   if item 1 to -11 of theLine = tName then put L & cr after tNewFiles
 end repeat
 put tNewFiles into tFile
 -- put tFile & cr after msg
 if tFile = empty then return "Error: could not find file"
 set the defaultFolder to tDefaultFolder
 return tFile

end CreatorAndType


Le 30 juil. 05 à 13:07, Dave Cragg a écrit :

On 30 Jul 2005, at 10:40, Eric Chatonet wrote:


Hi Brian,

As the files function returns a list sorted by alphabetical order, I don't think it's necessary.



But, for example, if you were looking for a file named "mend.png" and there was a file named "amend.png" in the folder, you'd find "amend.png".

A bit cumbersome, but when I've done this, I've repeated through all lines in the detailed files and done a match on the first item in each.

Cheers
dave



Best Regards from Paris,

Eric Chatonet.
----------------------------------------------------------------
So Smart Software

For institutions, companies and associations
Built-to-order applications: management, multimedia, internet, etc.
Windows, Mac OS and Linux... With the French touch

Free plugins and tutorials on my website
----------------------------------------------------------------
Web site        http://www.sosmartsoftware.com/
Email        [EMAIL PROTECTED]/
Phone        33 (0)1 43 31 77 62
Mobile        33 (0)6 20 74 50 86
----------------------------------------------------------------

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution




--
Alex Tweedly       http://www.tweedly.net



--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.338 / Virus Database: 267.9.6/59 - Release Date: 27/07/2005

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to