| All the Storage and Stream
          related objects use common flags where it is possible. Also all the default values for the
          optional parameters are the same for all the methods. The flags are supported by Open/Create methods. This concerns the SFMain
          (OpenFile, CreateFile, OpenDirectory, CreateDirectory, OpenStorageFile
          etc.), SFStorage (OpenStoage, CreateStorage, OpenStream etc.), SFFileStream
          and SFDirStorage. Whenever SF_Flags are required the following table applies: 
            
              | Flag name | Flag value | Meaning |  
              | Open/create mode
                flags |  
              | cSFRead | &H00000000 | read only mode for the
                stream/storage |  
              | cSFWrite | &H00000001 | write only mode |  
              | cSFReadWrite | &H00000002 | read/write mode |  
              | Sharing |  
              | cSFShareDenyNone | &H00000040 | The stream/storage is fully
                shared - can be opened by other applications in any mode |  
              | cSFShareDenyRead | &H00000030 | Read is forbidden for the other
                applications. |  
              | cSFShareDenyWrite | &H00000020 | Write is forbidden for the
                other applications. |  
              | cSFShareExclusive | &H00000010 | Other applications will receive
                an error if any attempt is made to open the same object
                (storage/stream/file/directory etc.) |  
              | cSFSharePriority | &H00040000 | OLE Files only - commit
                operations of the other applications will not occur until the
                object is opened in priority mode. |  
              | Creation specific
                (Can be used in CreateXXX methods) |  
              | cSFCreate | &H00001000 | If the stream/file/storage
                exists it will be deleted and a new one will be created |  
              | cSFConvert | &H00020000 | Supported by some storage
                implementations only (OLE files for example) convert the file to
                a part of the storage (see MSDN for more details - see STGM
                enumeration). |  
              | cSFFailIfThere | &H00000000 | Creation will fail if the
                object already exists. |  
              | Transactioning (if
                supported - OLE Files) |  
              | These flags are
                rarely useful for scripting applications. For information on the
                transaction control flags see MSDN (STGM enumeration). |  In all the methods where SF_Flags are expected they are optional.
          If omitted the default value used is &H12 (0x12) which
          means: open exclusive for read and write. Please
          note that exclusive access is default! If you need more than
          one applications/pages to share the same resource you will need to
          specify flags explicitly or share one single SFStorage/SFStream object
          between the applications.
           Sharing techniquesIn general there are two ways to implement resource
          (file/storage/stream) sharing in the applications:
           
            By using appropriate flags.Or by sharing one SFStorage or SFStream object attached to the
              resource between the applications. The first technique is always applicable but depends on the
          implementation of the sharing mechanisms in the OS or the custom
          objects that manage the resource (s). It is quite good technique for
          files and OLE storages, but can be inefficient for some applications.
          This technique will require code to handle the read/write errors
          caused by sharing violations. The second technique serializes all the operations through the SF
          object and thus always guarantees that only one operation with the
          resource will be in progress at a time. However it is suitable only
          for environments where objects can be easilly passed between the
          applications. For example this is quite simple in ASP (using
          Application). The free threaded version of the component is
          recommended. Note for ASP developers. While in IIS you have only one instance of
          the ASP engine in ALP the user is able to start several separate
          copies of the application running in isolated processes. If they use
          the same resource through SF objects the second instance (and any
          subsequent instances) of the application may be unable to access it if
          it is already opened by the first running instance in exclusive mode.
          However preventing the subsequent instances from accessing the
          resource can be a good way to guarantee the resource consistency. To
          inform user put some error handling code in the initialization part of
          the application to inform him/her that the resource is locked by other
          application/instance of the same app. and he/she should work with it
          instead of starting a new copy. |