Beispiel #1
0
        //────────────────────────────────────────

        /// <summary>
        /// 絶対パスが、ファイルシステムで使えるファイルパスの文字列の長さの制限を越えていれば真。
        /// </summary>
        /// <param name="newDirectoryPath">指定するものがない場合は、System.Windows.Forms.StartupPath を入れてください。</param>
        /// <param name="newHumanInputFilePath"></param>
        /// <param name="cElm"></param>
        public static bool IsTooLong(
            string folderRel_New,
            string fileRel_Humaninput_New,
            Log_Reports log_Reports,
            Conf_String cElm
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0);

            log_Method.BeginMethod(Info_Syntax.Name_Library, "Util_Filepath", "IsTooLong", log_Reports);

            // フラグ。
            bool bFlagCheckPathTooLong = false;

            if (log_Reports.Successful)
            {
                // チェック。絶対パスにすることができればOK。
                Util_Filepath.ToAbsolute(
                    folderRel_New,
                    fileRel_Humaninput_New,
                    ref bFlagCheckPathTooLong,
                    true,        //ファイル名の長さが上限超過でも、正常処理扱いとします。
                    log_Reports, // out sErrorMsg,
                    cElm
                    );
            }

            goto gt_EndMethod;
            //
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return(bFlagCheckPathTooLong);
        }
Beispiel #2
0
        public void SetHumaninput(
            string fileRel_Humaninput_New,
            Log_Reports log_Reports
            )
        {
            if (log_Reports.Successful)
            {
                // ダミー・フラグ。使いません。
                bool bDammyFlagCheckPathTooLong = false;

                // チェックするだけ。 絶対パスにすることができれば問題なし、そのままスルー。
                Util_Filepath.ToAbsolute(
                    this.directory_Base,
                    fileRel_Humaninput_New,
                    ref bDammyFlagCheckPathTooLong,
                    false,//ファイル名の長さが上限超過ならエラー
                    log_Reports,
                    this.Parent
                    );
            }

            if (log_Reports.Successful)
            {
                // 引数を受け入れます。
                this.humaninput = fileRel_Humaninput_New;
            }

            goto gt_EndMethod;
            //
            //
gt_EndMethod:
            return;
        }
Beispiel #3
0
        //────────────────────────────────────────

        /// <summary>
        /// 相対パスが設定されていた場合、その相対元となるディレクトリーへのパスです。
        /// そうでない場合は、System.Windows.Forms.StartupPath を入れてください。
        /// </summary>
        /// <param name="newDirectoryPath"></param>
        public void SetDirectory_Base(
            string sFolderpath_New,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0);

            log_Method.BeginMethod(Info_Syntax.Name_Library, this, "SetSDirectory_Base", log_Reports);

            // ダミー・フラグ。使いません。
            bool bDammyFlagCheckPathTooLong = false;

            if (this.Conf is Conf_Filepath)
            {
                Conf_Filepath cf_Fpath = ((Conf_Filepath)this.Conf);

                // チェック。絶対パスにすることができればOK。
                Util_Filepath.ToAbsolute(
                    sFolderpath_New,
                    cf_Fpath.GetHumaninput(),
                    ref bDammyFlagCheckPathTooLong,
                    false,       //ファイル名の長さが上限超過ならエラー
                    log_Reports, //out sErrorMsg,
                    this.Conf
                    );
                if (!log_Reports.Successful)
                {
                    // 既エラー。
                    goto gt_EndMethod;
                }

                cf_Fpath.SetDirectory_Base(sFolderpath_New);
            }
            else
            {
                // エラー
                if (log_Reports.CanCreateReport)
                {
                    Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                    r.SetTitle("▲エラー903!", log_Method);

                    Log_TextIndented s = new Log_TextIndentedImpl();
                    s.Append(Environment.NewLine);
                    s.Append("#GetSAbsoluteFilePath:型が違います。[" + this.Conf.GetType().Name + "]");

                    r.Message = s.ToString();
                    log_Reports.EndCreateReport();
                }
            }

            //
            //
            //
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return;
        }
Beispiel #4
0
        //────────────────────────────────────────

        /// <summary>
        /// パスを設定します。相対パス、絶対パスの違いを吸収するためのものです。
        /// </summary>
        /// <param name="folderRel_OrEmpty">フォルダーパス。指定するものがない場合は、System.Windows.Forms.StartupPath を入れてください。</param>
        /// <param name="fileBoth_Newhumaninput">ファイルパス。</param>
        public void Init1(
            string folderRel_OrEmpty,
            string fileBoth_Newhumaninput,
            Log_Reports log_Reports
            )
        {
            // ダミー・フラグ。使いません。
            bool bDammyFlagCheckPathTooLong = false;

            if (log_Reports.Successful)
            {
                // チェック。絶対パスにすることができればOK。
                Util_Filepath.ToAbsolute(
                    folderRel_OrEmpty,
                    fileBoth_Newhumaninput,
                    ref bDammyFlagCheckPathTooLong,
                    false,       //ファイル名の長さが上限超過ならエラー
                    log_Reports, //out out_sErrorMsg,
                    this
                    );
            }

            if (log_Reports.Successful)
            {
                this.SetDirectory_Base(folderRel_OrEmpty);
            }

            if (log_Reports.Successful)
            {
                this.SetHumaninput(
                    fileBoth_Newhumaninput,
                    log_Reports
                    );
            }

            goto gt_EndMethod;
            //
            //
gt_EndMethod:
            return;
        }
Beispiel #5
0
        //────────────────────────────────────────

        /// <summary>
        /// ファイルパスを、絶対ファイルパスに変換します。
        /// </summary>
        /// <param name="humaninput"></param>
        /// <param name="isTooLong"></param>
        /// <param name="isSafe_TooLong"></param>
        /// <param name="log_Reports"></param>
        /// <param name="cElm"></param>
        /// <returns></returns>
        public static string ToAbsolute(
            string humaninput,
            ref bool isTooLong,
            bool isSafe_TooLong,
            Log_Reports log_Reports,
            Conf_String cElm
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0);

            log_Method.BeginMethod(Info_Syntax.Name_Library, "Util_Filepath", "ToAbsolute③", log_Reports);

            string sResult;

            if (log_Reports.Successful)
            {
                sResult = Util_Filepath.ToAbsolute(
                    "",
                    humaninput,
                    ref isTooLong,
                    isSafe_TooLong,
                    log_Reports,//out sErrorMsg,
                    cElm
                    );
            }
            else
            {
                sResult = "";
            }

            goto gt_EndMethod;
            //
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return(sResult);
        }
Beispiel #6
0
        //────────────────────────────────────────

        /// <summary>
        /// 絶対パスを取得します。
        ///
        /// 未設定の場合は、空文字列を返します。
        ///
        /// ・ファイルパスとして利用できない文字や、予約語が含まれていると例外を投げます。
        /// ・絶対パスの文字列の長さが、ファイルシステムで使える制限を越えると例外を投げます。
        ///
        /// 設定されたパスが相対パスだった場合に、ベース・パスが設定されていなければ、
        /// 起動「.exe」のあったパスが頭に付く。
        /// </summary>
        /// <returns></returns>
        public override string Lv4Execute_OnImplement(
            EnumHitcount request,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl();

            log_Method.BeginMethod(Info_Syntax.Name_Library, this, "Execute4_OnExpressionString", log_Reports);
            //
            //

            // 絶対パスにして返します。

            string sFpath;

            if (this.Conf is Conf_Filepath)
            {
                Conf_Filepath cf_Fpath = (Conf_Filepath)this.Conf;

                bool bCheckPathTooLong = false;

                if (log_Reports.Successful)
                {
                    sFpath = Util_Filepath.ToAbsolute(
                        this.Directory_Base,
                        cf_Fpath.GetHumaninput(), //this.SHumanInput相当
                        ref bCheckPathTooLong,    //ファイル名の長さチェックは、もう済んでいるものとして、行いません。
                        false,                    //ファイル名の長さが上限超過ならエラー
                        log_Reports,              //out sErrorMsg,
                        this.Conf
                        );
                }
                else
                {
                    sFpath = "";
                }
            }
            else
            {
                // エラー。
                sFpath = "";
                if (log_Reports.CanCreateReport)
                {
                    Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                    r.SetTitle("▲エラー901!", log_Method);

                    Log_TextIndented s = new Log_TextIndentedImpl();
                    s.Append(Environment.NewLine);
                    s.Append("#GetSAbsoluteFilePath:型が違います。[" + this.Conf.GetType().Name + "]");

                    r.Message = s.ToString();
                    log_Reports.EndCreateReport();
                }
            }

            goto gt_EndMethod;
            //
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return(sFpath);
        }