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; }
public VB6RandomFile(string FileName, OpenAccess access, OpenShare share, int lRecordLen) : base(FileName, access, share, lRecordLen) { }
public VB6BinaryFile(string FileName, OpenAccess access, OpenShare share) : base(FileName, access, share, -1) { }
internal VB6OutputFile(string FileName, OpenShare share, bool fAppend) : base(FileName, OpenAccess.Write, share, -1) { base.m_fAppend = fAppend; }
public static void FileOpen(int FileNumber, string FileName, OpenMode Mode, OpenAccess Access, OpenShare Share, int RecordLength) {}
// 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; }
public VB6InputFile(string FileName, OpenShare share) : base(FileName, OpenAccess.Read, share, -1) { }
public VB6OutputFile(string FileName, OpenShare share, bool fAppend) : base(FileName, OpenAccess.Write, share, -1) { this.m_fAppend = fAppend; }
public static void FileOpen(int FileNumber, string FileName, OpenMode Mode, OpenAccess Access, OpenShare Share, int RecordLength) { }
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; } }
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); }
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" })); } }