[fpc-pascal] Temporary Filenames in GO32

Jason P Sage jasonpsage at jegas.org
Thu Oct 12 03:19:46 CEST 2006


I read an old thread about how to make temporary filenames (unique filenames
is what the topic was about) and I have written a simple unit that sort of
does this without needing a second to elapse (or millisecond for that
matter) to pass in order to get the next unique name. I have heard of a
possible unit or routine that MAY be available to us FPC coders that does
some sort of GUID algorithm. this would interest me. 

 

My algorithm is platform independent but I know my technique may be frowned
upon by many but it works. 

 

I create a file called something intuitive: counterlockfile.lock

 

Each call to my unit TRIES to open the file for REWRITE - if it can't
(because another process has it - then it retries a few times with a
sleep/yield call and both the repeat attempts and sleep duration are
configurable.

 

When the file CAN be opened, this means ownership of a second file called
something intuitive: mycounter.txt  

 

This file is simply one line of text that is a zero padded string e.g.:
00000001    

 

I'm assuming readers understand there is logic in the code to create the
files if they don't already exist and there is a way for all programs
wishing to use this little system to know how to locate the same directory
that was set up for this purpose.

 

Each time a program calls the function that reads the counter, it works like
an autonumber in a database application, returning the current value and
then adding 1 to it and saving the new value out there for the next time.

 

The cleanup is merely closing the file that is/was named
counterlockfile.lock that has been opened for rewrite during the counter
read, add one, save, close process.

 

A bit nasty. but it works - and it works EVERY TIME.

 

So this message is to one: maybe help a GO32 user who needs unique
filenames, and anyone else on (I would assume) any platform.

 

Again - if there is anyone who knows of a more elegant way to do this
reliably - in an environment that may have a ton of different EXE's all
trying to do the same thing at the same time - without choking - please let
me know!

 

Jason P Sage

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20061011/c5382c61/attachment.html>


More information about the fpc-pascal mailing list