O$ - FileOps strangeness...

David Walton omuser at charlie.housing.admin.nyu.edu
Tue Apr 21 19:52:27 EDT 2009

Reg and Kelly,

Thanks. I got it figured out. This takes a bit of the mystery out of  
it. Don't usually work in windows so I hadn't been seeing the issues.  
Seems that if I want my products to be successful, I'm going to have  
to play nice with those users too...

Funny how over all these years, I've never noticed a fileops object -  
only the fileops commands. I really wish there was better  
documentation about these - and that it wasn't so "all over the place".



On Apr 21, 2009, at 3:23 AM, Reg Paling wrote:

> Hi David,
> I once spent some time fiddling around in exactly the same situation  
> as you, and realised it's better to just use $readfile and $writefile.
> While it looks like a good idea to use $readentirefile, once you  
> think it through, it's not unless you know your application will  
> only ever be Mac-only.
> Particularly in the case of a library, you already know what the  
> filetype and creator are so you don't need to read them off the disk.
> So I suggest just changing all your $readentirefile to $readfile and  
> all $writeentirefile to $writefile, (you'll need to re-load any  
> library file images you already have in the database), and from  
> there it will work fine on both platforms.
> Do lvFileOpsObj.$createfile(lvPath,'OO$A','OO$$')
> Do lvFileOpsObj.$writefile(lvTempBin) Returns lvResult
> If lvResult=1
> Else
>  OK message Couldn't download library (Sound bell) {Error from  
> $writefile - error code: [lvResult]}
> End If
> Do lvFileOpsObj.$closefile()
> Cheers,
> Reg
> David Walton wrote:
>> Kelly,
>> Seems I am now encountering an issue with the 12 byte header -  
>> which isn't being read - or written. Don't know how to get windows  
>> to read it...
>> Any ideas?
>> It gives the message that Omnis can't read the library file (the  
>> one I'm reading and writing).
>> In brief, here's what I'm doing...
>> There's a version update button that , when clicked, prompts for a  
>> library file. The file is read and placed into the database. Then,  
>> when a client logs in, it fetches the most current library file and  
>> replaces their local copy. Then it relaunches the library again.
>> I can look at the binary that is written to the database from  
>> windows and it doesn't have the 12 byte header. I assume that is  
>> causing windows to not understand the file type???
>> Thanks.
>> On Apr 17, 2009, at 7:44 PM, Kelly Burgess wrote:
>>> Hi David,
>>>> Do FileOps.$readentirefile(ipath,lbinary) returns lstatus
>>>> This works fine on OSX but lstatus returns -47 (open file error)  
>>>> on XP.
>>> I've never used this function on Windows.  Its advantage is that  
>>> on Mac it collects both data and resource forks of a file - if  
>>> they both exist. Even for files that don't contain a resource  
>>> fork, the binary returned will still have a 12-byte header  
>>> containing Mac file type and creator, and an offset to a potential  
>>> resource fork, a.k.a. the size of the data fork following the  
>>> header.
>>> So on Windows I'd be inclined to use a FileOps object with $open/ 
>>> $read/$close instead.
>>> Kelly
> _____________________________________________________________
> Manage your list subscriptions at http://lists.omnis-dev.com

More information about the omnisdev-en mailing list