From: Jeroen <jv...@cf...> - 2001-03-09 16:34:28
|
On Friday 09 March 2001 10:08, you wrote: > > On Thursday 08 March 2001 18:39, you wrote: > > > Hi Jereon, > > > > > > > > here is a method which tries to generate a filename which is > > > > > unique, > > > > or > > > > > > > returns a blank string if it couldn't. It leaves the extension (if > > > > it > > > > > has > > > > > > > > one) unaltered. It is useful for generating a filename for > > > > auto-saving > > > > > > > situations. > > > > > > > > > > > > > > > FXString FXFile::uniqueFilename(const FXString& file){ > > > > > if (!exists(file)) return file; > > > > > FXString ext = extension(file); > > > > > FXString path = directory(file); > > > > > path += PATHSEP; > > > > > path += title(file); > > > > > FXString filename; > > > > > register FXint fileCount = 0; > > > > > while(fileCount<1000){ > > > > > filename = > > > > > > FXStringFormat("%s%i.%s",path.text(),fileCount,ext.text()); > > > > > > > > if(!exists(filename)) break; > > > > > fileCount++; > > > > > } > > > > > if(fileCount<1000) return filename; > > > > > else return FXString::null; > > > > > } > > > > > > > > > > > > > > > > > > > > Mathew Robertson > > > > > > > > Great! I will incorporate this function in the next release! > > > > > > > > I suggest we call it FXFile::unique(), because its shorter > > > > and all FXFile functions > > > > work on filenames so the full FXFile::uniqueFilename() would > > > > be a bit long to type, > > > > I hope you don't mind. > > > > > > nah - though, I just noticed in my code snippet - I origonally tested > > > > this > > > > > for files with extensions. I just noticed that I assumed that an > > > > extension > > > > > existed ie > > > > > > > > filename = > > > > > > FXStringFormat("%s%i.%s",path.text(),fileCount,ext.text()); > > > > > > notice the dot in "%s%i.%s" - I stuffed up :-o > > > > OOPS. I didn't see that either! > > I think you should include a process id in the filename. On unix that is > the PID, but I don't know what to use on windows. Use fxgetpid(). -- +-------------------------------+--------------------------------------------+ | E-Mail : jv...@cf... | The FOX Platform Independent GUI Toolkit: | | USMail : 215 Wynn Drive, | | | Huntsville, AL 35805 | Official Site: | | Phone : (256) 726-4820 | http://www.cfdrc.com/FOX/fox.html | | Fax : (256) 726-4806 | ftp://ftp.cfdrc.com/pub/FOX | | WWW : http://www.cfdrc.com | | +-------------------------------+--------------------------------------------+ | Copyright (C) 10:30 03/ 9/2001 Jeroen van der Zijp. All Rights Reserved. | +----------------------------------------------------------------------------+ |