lion@dat1hb.north.de (Daniel Tietze) (06/24/91)
Hi! I'm sorry if the answer to this question seems ovious to you, you may be just the one person who knows all his interrupts by heart. I don't, so could someone please help? (reading some of the replies posted in this newsgourp, I thought this preface was adequate). I have a question about using SHARE (as supplied with MS-DOS) with Turbo Pascal programs. How can I check SHARE violations in my program? What exactly does SHARE do when it encounters a sharing violation? I believe the IOResult is set to an appropriate value, but I don't know exactly which result is to be expected. How can I get the program to retry after a sharing violation. Do I have to code it explicitly (i.e. repeat .... until (share_ok OR computer_switched_off; :-) ) or does SHARE take care of that? By the way, when exactly does a sharing violation occur? In Read/Read, Read/Write or Write/Write situations? The problem to be solved is: I want to make my BBS multi-nodeable and two users accessing the same Board at the same time could prove fatal in certain situations, so I have to have a way of getting around this, don't I? Any help would, as usual, be greatly appreciated. Daniel +------------------------------------------------------------------+ | Daniel Tietze, 2800 Bremen 1, Tel.(voice) : 0421/448806 | |-=============- DATELINE Communications, Bremen. The home of DMS | | Mail: (private) lion@dat1hb.north.de (univ) E07J@DHBRRZ41.BITNET | |-====- DMS-Support: dateline@dat1hb.north.de | +------------------------------------------------------------------+
Marco.Eichelberg@arbi.informatik.uni-oldenburg.de (Marco Eichelberg) (06/28/91)
lion@dat1hb.north.de (Daniel Tietze) writes: > I have a question about using SHARE (as supplied with MS-DOS) with >Turbo Pascal programs. How can I check SHARE violations in my program? >What exactly does SHARE do when it encounters a sharing violation? I >believe the IOResult is set to an appropriate value, but I don't >know exactly which result is to be expected. [...] The only "interface" from TURBO-PASCAL to SHARE.EXE is the global variable FILEMODE. The default is FileMode=2, which means "exclusive read/write". By setting this variable to a appropriate value (i don`t have my manuals with me, so I can`t tell you right now) you can open a variable for "multiple read" or even "multiple read/write" access and enable multi-user processing (at least on LANs). If share finds a access violation, you will simply get a DOS error code (IOResult=62 ??). You could trap this using {$I-}, or else you will get a runtime error. You have to program multiple retries to locked files yourself, DOS does not care about this. Hope this helps. Best Regards -- ========================================================================= Marco Eichelberg, Auf dem Braakland 3, D-W2875 Bookholzberg, Germany Phone: +49 4223 2726 (08.00 - 18.00 MET) UUCP : eichelberg@uniol.uucp Fax : +49 4223 8322 ZNet : eichelberg@uniol.zer Inhouse : meichel!faramir Bitnet: 249565 AT DOLUNI1 Domain (Internet) : Marco.Eichelberg@arbi.informatik.uni-oldenburg.de =========================================================================