コード例 #1
0
 protected VB6File(string sPath, OpenAccess access, OpenShare share, int lRecordLen)
 {
     if (((access != OpenAccess.Read) && (access != OpenAccess.ReadWrite)) && (access != OpenAccess.Write))
     {
         throw new ArgumentException(Utils.GetResourceString("Argument_InvalidValue1", new string[] { "Access" }));
     }
     this.m_access = access;
     if (((share != OpenShare.Shared) && (share != OpenShare.LockRead)) && ((share != OpenShare.LockReadWrite) && (share != OpenShare.LockWrite)))
     {
         throw new ArgumentException(Utils.GetResourceString("Argument_InvalidValue1", new string[] { "Share" }));
     }
     this.m_share = share;
     this.m_lRecordLen = lRecordLen;
     this.m_sFullPath = new FileInfo(sPath).FullName;
 }
コード例 #2
0
ファイル: VB6RandomFile.cs プロジェクト: ysc0423/CommonCore
 public VB6RandomFile(string FileName, OpenAccess access, OpenShare share, int lRecordLen)
     : base(FileName, access, share, lRecordLen)
 {
 }
コード例 #3
0
 public VB6BinaryFile(string FileName, OpenAccess access, OpenShare share) : base(FileName, access, share, -1)
 {
 }
コード例 #4
0
 internal VB6OutputFile(string FileName, OpenShare share, bool fAppend) : base(FileName, OpenAccess.Write, share, -1)
 {
     base.m_fAppend = fAppend;
 }
コード例 #5
0
	public static void FileOpen(int FileNumber, string FileName, OpenMode Mode, OpenAccess Access, OpenShare Share, int RecordLength) {}
コード例 #6
0
 internal VB6OutputFile(string FileName, OpenShare share, bool fAppend) : base(FileName, OpenAccess.Write, share, -1)
 {
     base.m_fAppend = fAppend;
 }
コード例 #7
0
        // Open a file.
        public static void FileOpen
            (int FileNumber, String FileName, OpenMode Mode,
            [Optional][DefaultValue(OpenAccess.Default)]
            OpenAccess Access,
            [Optional][DefaultValue(OpenShare.Default)]
            OpenShare Share,
            [Optional][DefaultValue(-1)] int RecordLength)
        {
            FileMode   mode;
            FileAccess access;
            FileShare  share;
            int        recordLength;
            int        bufferSize;

            // Validate the parameters and convert them into
            // something that System.IO is more comfortable with.
            if (Mode != OpenMode.Input && Mode != OpenMode.Output &&
                Mode != OpenMode.Random && Mode != OpenMode.Append &&
                Mode != OpenMode.Binary)
            {
                throw new ArgumentException
                          (S._("VB_InvalidFileMode"), "Mode");
            }
            if (Access == OpenAccess.Default)
            {
                access = FileAccess.ReadWrite;
            }
            else if (Access == OpenAccess.Read)
            {
                access = FileAccess.Read;
            }
            else if (Access == OpenAccess.Write)
            {
                access = FileAccess.Write;
            }
            else if (Access == OpenAccess.ReadWrite)
            {
                access = FileAccess.ReadWrite;
            }
            else
            {
                throw new ArgumentException
                          (S._("VB_InvalidFileAccess"), "Access");
            }
            if (Share == OpenShare.Default)
            {
                share = FileShare.ReadWrite;
            }
            else if (Share == OpenShare.LockReadWrite)
            {
                share = FileShare.ReadWrite;
            }
            else if (Share == OpenShare.LockRead)
            {
                share = FileShare.Read;
            }
            else if (Share == OpenShare.LockWrite)
            {
                share = FileShare.Write;
            }
            else if (Share == OpenShare.Shared)
            {
                share = FileShare.None;
            }
            else
            {
                throw new ArgumentException
                          (S._("VB_InvalidFileShare"), "Share");
            }
            if (RecordLength != -1)
            {
                if (RecordLength < 1 || RecordLength > 32767)
                {
                    throw new ArgumentException
                              (S._("VB_InvalidRecordLength"), "RecordLength");
                }
                if (Mode == OpenMode.Random)
                {
                    recordLength = RecordLength;
                    bufferSize   = -1;
                }
                else
                {
                    recordLength = 1;
                    bufferSize   = RecordLength;
                }
            }
            else
            {
                recordLength = 1;
                bufferSize   = -1;
            }

            // Determine the appropriate FileMode value.
            if (Mode == OpenMode.Random || Mode == OpenMode.Binary)
            {
                if (System.IO.File.Exists(FileName))
                {
                    mode = FileMode.Open;
                }
                else if (access == FileAccess.Read)
                {
                    mode = FileMode.OpenOrCreate;
                }
                else
                {
                    mode = FileMode.Create;
                }
            }
            else if (Mode == OpenMode.Input)
            {
                mode = FileMode.Open;
            }
            else if (Mode == OpenMode.Output)
            {
                mode = FileMode.Create;
            }
            else
            {
                mode = FileMode.Append;
            }

            // Allocate the file number.
            File file = File.AllocateFile
                            (FileNumber, Mode, Assembly.GetCallingAssembly());

            file.recordLength = recordLength;

            // Attempt to open the file.
            FileStream stream = null;

            try
            {
                if (bufferSize != -1)
                {
                    stream = new FileStream(FileName, mode, access,
                                            share, bufferSize);
                }
                else
                {
                    stream = new FileStream(FileName, mode, access, share);
                }
            }
            finally
            {
                if (stream == null)
                {
                    // The create failed, so clean up the allocated file.
                    file.Close();
                }
            }
            file.stream = stream;
        }
コード例 #8
0
 public VB6InputFile(string FileName, OpenShare share) : base(FileName, OpenAccess.Read, share, -1)
 {
 }
コード例 #9
0
 public VB6RandomFile(string FileName, OpenAccess access, OpenShare share, int lRecordLen) : base(FileName, access, share, lRecordLen)
 {
 }
コード例 #10
0
ファイル: VB6OutputFile.cs プロジェクト: ysc0423/CommonCore
 public VB6OutputFile(string FileName, OpenShare share, bool fAppend)
     : base(FileName, OpenAccess.Write, share, -1)
 {
     this.m_fAppend = fAppend;
 }
コード例 #11
0
 public static void FileOpen(int FileNumber, string FileName, OpenMode Mode, OpenAccess Access, OpenShare Share, int RecordLength)
 {
 }
コード例 #12
0
 public static void FileOpen(int FileNumber, string FileName, OpenMode Mode, OpenAccess Access = -1, OpenShare Share = -1, int RecordLength = -1)
 {
     try
     {
         ValidateMode(Mode);
         ValidateAccess(Access);
         ValidateShare(Share);
         if ((FileNumber < 1) || (FileNumber > 0xff))
         {
             throw ExceptionUtils.VbMakeException(0x34);
         }
         vbIOOpenFile(Assembly.GetCallingAssembly(), FileNumber, FileName, Mode, Access, Share, RecordLength);
     }
     catch (Exception exception)
     {
         throw exception;
     }
 }
コード例 #13
0
        private static void vbIOOpenFile(Assembly assem, int FileNumber, string FileName, OpenMode Mode, OpenAccess Access, OpenShare Share, int RecordLength)
        {
            VB6File file;
            AssemblyData assemblyData = ProjectData.GetProjectData().GetAssemblyData(assem);
            if (GetChannelOrNull(assemblyData, FileNumber) != null)
            {
                throw ExceptionUtils.VbMakeException(0x37);
            }
            if ((FileName == null) || (FileName.Length == 0))
            {
                throw ExceptionUtils.VbMakeException(0x4b);
            }
            FileName = new FileInfo(FileName).FullName;
            if (CheckFileOpen(assemblyData, FileName, OpenModeTypesFromOpenMode(Mode)))
            {
                throw ExceptionUtils.VbMakeException(0x37);
            }
            if ((RecordLength != -1) && (RecordLength <= 0))
            {
                throw ExceptionUtils.VbMakeException(5);
            }
            if (Mode == OpenMode.Binary)
            {
                RecordLength = 1;
            }
            else if (RecordLength == -1)
            {
                if (Mode == OpenMode.Random)
                {
                    RecordLength = 0x80;
                }
                else
                {
                    RecordLength = 0x200;
                }
            }
            if (Share == OpenShare.Default)
            {
                Share = OpenShare.LockReadWrite;
            }
            OpenMode mode = Mode;
            switch (mode)
            {
                case OpenMode.Input:
                    if ((Access != OpenAccess.Read) && (Access != OpenAccess.Default))
                    {
                        throw new ArgumentException(Utils.GetResourceString("FileSystem_IllegalInputAccess"));
                    }
                    file = new VB6InputFile(FileName, Share);
                    break;

                case OpenMode.Output:
                    if ((Access != OpenAccess.Write) && (Access != OpenAccess.Default))
                    {
                        throw new ArgumentException(Utils.GetResourceString("FileSystem_IllegalOutputAccess"));
                    }
                    file = new VB6OutputFile(FileName, Share, false);
                    break;

                case OpenMode.Random:
                    if (Access == OpenAccess.Default)
                    {
                        Access = OpenAccess.ReadWrite;
                    }
                    file = new VB6RandomFile(FileName, Access, Share, RecordLength);
                    break;

                case OpenMode.Append:
                    if (((Access != OpenAccess.Write) && (Access != OpenAccess.ReadWrite)) && (Access != OpenAccess.Default))
                    {
                        throw new ArgumentException(Utils.GetResourceString("FileSystem_IllegalAppendAccess"));
                    }
                    file = new VB6OutputFile(FileName, Share, true);
                    break;

                default:
                    if (mode != OpenMode.Binary)
                    {
                        throw ExceptionUtils.VbMakeException(0x33);
                    }
                    if (Access == OpenAccess.Default)
                    {
                        Access = OpenAccess.ReadWrite;
                    }
                    file = new VB6BinaryFile(FileName, Access, Share);
                    break;
            }
            AddFileToList(assemblyData, FileNumber, file);
        }
コード例 #14
0
 private static void ValidateShare(OpenShare Share)
 {
     if ((((Share != OpenShare.Default) && (Share != OpenShare.Shared)) && ((Share != OpenShare.LockRead) && (Share != OpenShare.LockReadWrite))) && (Share != OpenShare.LockWrite))
     {
         throw new ArgumentException(Utils.GetResourceString("Argument_InvalidValue1", new string[] { "Share" }));
     }
 }
コード例 #15
0
 public VB6InputFile(string FileName, OpenShare share) : base(FileName, OpenAccess.Read, share, -1)
 {
 }