/// <summary>
        /// Set whether or not to read headers.
        /// </summary>
        public OptionsBuilder WithReadHeader(ReadHeader readHeader)
        {
            if (!Enum.IsDefined(Types.ReadHeader, readHeader))
            {
                Throw.ArgumentException($"Unexpected {nameof(Cesil.ReadHeader)} value: {readHeader}", nameof(readHeader));
            }

            return(WithReadHeaderInternal(readHeader));
        }
        internal unsafe void Initialize(
            CharacterLookup preAllocLookup,
            char?escapeStartChar,
            char?escapeChar,
            ReadRowEnding rowEndings,
            ReadHeader hasHeaders,
            bool readingComments,
            bool skipLeadingWhitespace,
            bool skipTrailingWhitespace
            )
        {
            CharacterLookup = preAllocLookup;
            CharLookup      = (CharacterType *)preAllocLookup.Memory;
            RowEndings      = rowEndings;
            HasHeaders      = hasHeaders;

            switch (HasHeaders)
            {
            case ReadHeader.Always:
                CurrentState = State.Header_Start;
                break;

            case ReadHeader.Never:
                CurrentState = State.Record_Start;
                break;

            default:
                Throw.InvalidOperationException($"Unexpected {nameof(ReadHeader)}: {HasHeaders}");
                break;
            }

            TransitionMatrix =
                GetTransitionMatrix(
                    RowEndings,
                    escapeStartChar.HasValue && escapeStartChar == escapeChar,
                    readingComments,
                    skipLeadingWhitespace,
                    skipTrailingWhitespace,
#if DEBUG
                    out TransitionMatrixMemoryOffset
#else
                    out _
#endif
                    );
        }
Exemple #3
0
 private void ReadHeader_Click(object sender, RoutedEventArgs e)
 {
     ReadHeader?.Invoke(this, new RoutedEventArgs());
 }
Exemple #4
0
        private async void button1_Click(object sender, EventArgs e)
        {
            //ファイルを開く
            OpenFileDialog Open_ARC = new OpenFileDialog()
            {
                Title            = "Open",
                InitialDirectory = @"C:\Users\User\Desktop",
                Filter           = "arc file|*.arc"
            };

            if (Open_ARC.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            //ファイル名(拡張子なし)を取得
            string FileName = System.IO.Path.GetFileNameWithoutExtension(Open_ARC.FileName);

            //ファイル名(拡張子付き)を取得
            string FileName2 = System.IO.Path.GetFileName(Open_ARC.FileName);

            //ディレクトリを取得
            string PathDir = System.IO.Path.GetDirectoryName(Open_ARC.FileName);

            //カレントディレクトリを取得
            string CDir = System.IO.Directory.GetCurrentDirectory();

            //ヘッダーの読み取り
            System.IO.FileStream fs1 = new FileStream(Open_ARC.FileName, FileMode.Open, FileAccess.Read);
            BinaryReader         br1 = new BinaryReader(fs1);
            ReadHeader           rh  = new ReadHeader();

            //ヘッダーの情報からRARCかYAZ0か判定
            rh.Header = br1.ReadChars(4);
            if (new string(rh.Header) == "RARC")
            {
                br1.Close();
                fs1.Close();

                //フォルダを生成
                FileSystem.CreateDirectory(PathDir + "\\" + FileName);

                //ファイルをコピー
                System.IO.File.Copy(Open_ARC.FileName, PathDir + "\\" + FileName + "\\" + FileName2, true);

                //arcファイルを解凍

                //プロセス(arc)
                System.Diagnostics.Process arcExt = new System.Diagnostics.Process();
                arcExt.StartInfo.FileName        = CDir + "\\tools\\arcExtract.exe";
                arcExt.StartInfo.Arguments       = "\"" + PathDir + "\\" + FileName + "\\" + FileName2 + "\"";
                arcExt.StartInfo.UseShellExecute = true;
                //イベントハンドラがフォームを作成したスレッドで実行されるようにする
                arcExt.SynchronizingObject = this;
                arcExt.Exited += new EventHandler(arcExt_Exited);
                //プロセス終了時にイベントを発生させる
                arcExt.EnableRaisingEvents = true;
                arcExt.Start();

                //ファイルの出力が完了するまでTask.Delayで待つ
                await Task.Delay(2000);

                //コピー先のファイル(arc)を削除
                System.IO.File.Delete(PathDir + "\\" + FileName + "\\" + FileName2);
            }
            else if (new string(rh.Header) == "Yaz0")
            {
                br1.Close();
                fs1.Close();

                //フォルダを生成
                FileSystem.CreateDirectory(PathDir + "\\" + FileName);

                //ファイルをコピー
                System.IO.File.Copy(Open_ARC.FileName, PathDir + "\\" + FileName + "\\" + FileName2, true);

                System.Diagnostics.Process arc_yaz0_Ext = new System.Diagnostics.Process();
                arc_yaz0_Ext.StartInfo.FileName        = CDir + "\\tools\\yaz0dec.exe";
                arc_yaz0_Ext.StartInfo.Arguments       = "\"" + PathDir + "\\" + FileName + "\\" + FileName2 + "\"";
                arc_yaz0_Ext.StartInfo.UseShellExecute = true;
                arc_yaz0_Ext.SynchronizingObject       = this;
                arc_yaz0_Ext.Exited += new EventHandler(arc_yaz0_Ext_Exited);
                arc_yaz0_Ext.EnableRaisingEvents = true;
                arc_yaz0_Ext.Start();

                //Yaz0の解凍が完了するまでTask.Delayで待つ
                await Task.Delay(2000);

                System.Diagnostics.Process arcExt = new System.Diagnostics.Process();
                arcExt.StartInfo.FileName        = CDir + "\\tools\\arcExtract.exe";
                arcExt.StartInfo.Arguments       = "\"" + PathDir + "\\" + FileName + "\\" + FileName2 + "\"";
                arcExt.StartInfo.UseShellExecute = true;
                arcExt.SynchronizingObject       = this;
                arcExt.Exited += new EventHandler(arcExt_Exited);
                arcExt.EnableRaisingEvents = true;
                arcExt.Start();

                //ファイルの出力が完了するまでTask.Delayで待つ
                await Task.Delay(2000);

                //コピー先のファイル(arc)を削除
                System.IO.File.Delete(PathDir + "\\" + FileName + "\\" + FileName2);
                System.IO.File.Delete(PathDir + "\\" + FileName + "\\" + FileName2 + " 0.rarc");
            }
        }
 // sometimes we want to skip validation in tests
 internal OptionsBuilder WithReadHeaderInternal(ReadHeader r)
 {
     ReadHeader = r;
     return(this);
 }