Пример #1
0
        public void データの無いDATの保存()
        {
            //setUp
            string fileName = "iniDbTestTmp"; //テンポラリファイル名
            string progDir = Directory.GetCurrentDirectory();
            string path = string.Format("{0}\\{1}.ini", progDir, fileName);
            IniDb sut = new IniDb(progDir, fileName);

            ListVal listVal = new ListVal();
            var l = new ListVal();
            l.Add(new OneVal("mimeExtension", "", Crlf.Nextline, new CtrlTextBox("Extension", 10)));
            l.Add(new OneVal("mimeType", "", Crlf.Nextline, new CtrlTextBox("MIME Type", 50)));
            var oneVal = new OneVal("mime", null, Crlf.Nextline, new CtrlDat("comment", l, 350, LangKind.Jp));
            listVal.Add(oneVal);

            sut.Save("Basic", listVal); // nameTagは"Basic"で決め打ちされている

            //exercise
            var lines = File.ReadAllLines(path);
            string actual = lines[0];
            //verify
            Assert.That(actual, Is.EqualTo("DAT=Basic\bmime="));
            //tearDown
            sut.Delete();
        }
Пример #2
0
        //名前からコントロールを詮索する
        //処理だと処理が重くなるので、該当が無い場合nullを返す
        protected OneCtrl GetCtrl(String name)
        {
            OneVal oneVal = ListVal.Search(name);

            if (oneVal == null)
            {
                return(null);
            }
            return(oneVal.OneCtrl);
        }
Пример #3
0
 //OneValの追加
 public void Add(OneVal oneVal)
 {
     ListVal.Add(oneVal);
 }
Пример #4
0
 public void Add(OneVal oneVal)
 {
     ListVal.Add(oneVal);
 }
Пример #5
0
        //出力ファイル(Option.ini)からの入力用<br>
        //不正な文字列があった場合は、無効行として無視される<br>
        public bool FromReg(String str)
        {
            if (str == null){
                Value = null;
                return false;
            }
            switch (OneCtrl.GetCtrlType()){
                case CtrlType.Dat:
                    CtrlDat ctrlDat = (CtrlDat) OneCtrl;
                    Dat dat = new Dat(ctrlDat.CtrlTypeList);
                    if (!dat.FromReg(str)){
                        Value = null;
                        return false;
                    }
                    //Ver5.8.7 Java fix Datの中にComboBoxが存在する場合の旧バージョンの変換
                    foreach (var d in dat){
                        for (int i = 0; i < ctrlDat.ListVal.Count; i++){
                            if (ctrlDat.ListVal[i].OneCtrl.GetCtrlType() == CtrlType.ComboBox){
                                int val;
                                if(!int.TryParse(d.StrList[i],out val)){
                                    //Ver5.7.x以前のデータ
                                    OneVal dmy = new OneVal("dmy",null,Crlf.Nextline, ctrlDat.ListVal[i].OneCtrl);
                                    if (dmy.FromRegConv(d.StrList[i])){
                                        d.StrList[i] = dmy.ToReg(false);
                                    }
                                }

                            }
                        }
                    }
                    Value = dat;
                    break;
                case CtrlType.CheckBox:
                     try {
                        Value = Boolean.Parse(str);
                    } catch {
                        Value = false;
                        return false;
                    }
                    break;
                case CtrlType.Font:
                    Value = null;
                    var tmp = str.Split(',');
                    if (tmp.Length == 3){
                        try{

                            var family = new FontFamily(tmp[0]);
                            var size = (float) Convert.ToDouble(tmp[1]);
                            var style = (FontStyle) Enum.Parse(typeof (FontStyle), tmp[2]);
                            Value = new Font(family, size, style);
                        }catch(Exception){
                            Value = null;
                        }
                    }
                    if(Value==null){
                        return false;
                    }
                    break;
                case CtrlType.Memo:
                    Value = Util.SwapStr("\t", "\r\n", str);
                    break;
                case CtrlType.File:
                case CtrlType.Folder:
                case CtrlType.TextBox:
                    Value = str;
                    break;
                case CtrlType.Hidden:
                    try{
                        Value = Crypt.Decrypt(str);
                    }
                    catch (Exception){
                        Value = "";
                        return false;
                    }
                    break;
                case CtrlType.Radio:
                    try{
                        Value = Int32.Parse(str);
                    }catch (Exception){
                        Value = 0;
                        return false;
                    }
                    if ((int) Value < 0){
                        Value = 0;
                        return false;
                    }
                    break;
                case CtrlType.ComboBox:
                    int max = ((CtrlComboBox) OneCtrl).Max;
                    try {
                        var n = Int32.Parse(str);
                        if (n < 0 || max <= n) {
                            Value = 0;
                            return false;
                        }
                        Value = n;
                    } catch {
                        Value = 0;
                        //Ver5.9.2 Ver5.7.x以前のデータのコンバート
                        OneVal dmy = new OneVal("dmy", null, Crlf.Nextline, OneCtrl);
                        if (dmy.FromRegConv(str)) {
                            int n;
                            Int32.TryParse(dmy.ToReg(false), out n);
                            if (n < 0 || max <= n) {
                                Value = 0;
                                return false;
                            }
                            Value = n;
                        }
                        return false;
                    }
                    break;
                case CtrlType.Int:
                    try {
                        Value = Int32.Parse(str);
                    } catch {
                        Value = 0;
                        return false;
                    }
                    break;
                case CtrlType.BindAddr:
                    try{
                        Value = new BindAddr(str);
                    }
                    catch (ValidObjException){
                        Value = 0;
                        return false;
                    }
                    break;
                case CtrlType.AddressV4:
                    try{
                        Value = new Ip(str);
                    }
                    catch (ValidObjException){
                        Value = null;
                        return false;
                    }
                    break;
                case CtrlType.TabPage:
                case CtrlType.Group:
                    break;
                default:
                    Value = 0;
                    return false;
                    // "実装されていないCtrlTypeが指定されました OneVal.fromReg()"
            }
            return true;
        }
Пример #6
0
        //出力ファイル(Option.ini)からの入力用<br>
        //不正な文字列があった場合は、無効行として無視される<br>
        public bool FromReg(String str)
        {
            if (str == null)
            {
                Value = null;
                return(false);
            }
            switch (OneCtrl.GetCtrlType())
            {
            case CtrlType.Dat:
                CtrlDat ctrlDat = (CtrlDat)OneCtrl;
                Dat     dat     = new Dat(ctrlDat.CtrlTypeList);
                if (!dat.FromReg(str))
                {
                    Value = null;
                    return(false);
                }
                //Ver5.8.7 Java fix Datの中にComboBoxが存在する場合の旧バージョンの変換
                foreach (var d in dat)
                {
                    for (int i = 0; i < ctrlDat.ListVal.Count; i++)
                    {
                        if (ctrlDat.ListVal[i].OneCtrl.GetCtrlType() == CtrlType.ComboBox)
                        {
                            int val;
                            if (!int.TryParse(d.StrList[i], out val))
                            {
                                //Ver5.7.x以前のデータ
                                OneVal dmy = new OneVal("dmy", null, Crlf.Nextline, ctrlDat.ListVal[i].OneCtrl);
                                if (dmy.FromRegConv(d.StrList[i]))
                                {
                                    d.StrList[i] = dmy.ToReg(false);
                                }
                            }
                        }
                    }
                }
                Value = dat;
                break;

            case CtrlType.CheckBox:
                try {
                    Value = Boolean.Parse(str);
                } catch {
                    Value = false;
                    return(false);
                }
                break;

            case CtrlType.Font:
                Value = null;
                var tmp = str.Split(',');
                if (tmp.Length == 3)
                {
                    try{
                        var family = new FontFamily(tmp[0]);
                        var size   = (float)Convert.ToDouble(tmp[1]);
                        var style  = (FontStyle)Enum.Parse(typeof(FontStyle), tmp[2]);
                        Value = new Font(family, size, style);
                    }catch (Exception) {
                        Value = null;
                    }
                }
                if (Value == null)
                {
                    return(false);
                }
                break;

            case CtrlType.Memo:
                Value = Util.SwapStr("\t", "\r\n", str);
                break;

            case CtrlType.File:
            case CtrlType.Folder:
            case CtrlType.TextBox:
                Value = str;
                break;

            case CtrlType.Hidden:
                try{
                    Value = Crypt.Decrypt(str);
                }
                catch (Exception) {
                    Value = "";
                    return(false);
                }
                break;

            case CtrlType.Radio:
                try{
                    Value = Int32.Parse(str);
                }catch (Exception) {
                    Value = 0;
                    return(false);
                }
                if ((int)Value < 0)
                {
                    Value = 0;
                    return(false);
                }
                break;

            case CtrlType.ComboBox:
                int max = ((CtrlComboBox)OneCtrl).Max;
                try {
                    var n = Int32.Parse(str);
                    if (n < 0 || max <= n)
                    {
                        Value = 0;
                        return(false);
                    }
                    Value = n;
                } catch {
                    Value = 0;
                    //Ver5.9.2 Ver5.7.x以前のデータのコンバート
                    OneVal dmy = new OneVal("dmy", null, Crlf.Nextline, OneCtrl);
                    if (dmy.FromRegConv(str))
                    {
                        int n;
                        Int32.TryParse(dmy.ToReg(false), out n);
                        if (n < 0 || max <= n)
                        {
                            Value = 0;
                            return(false);
                        }
                        Value = n;
                    }
                    return(false);
                }
                break;

            case CtrlType.Int:
                try {
                    Value = Int32.Parse(str);
                } catch {
                    Value = 0;
                    return(false);
                }
                break;

            case CtrlType.BindAddr:
                try{
                    Value = new BindAddr(str);
                }
                catch (ValidObjException) {
                    Value = 0;
                    return(false);
                }
                break;

            case CtrlType.AddressV4:
                try{
                    Value = new Ip(str);
                }
                catch (ValidObjException) {
                    Value = null;
                    return(false);
                }
                break;

            case CtrlType.TabPage:
            case CtrlType.Group:
                break;

            default:
                Value = 0;
                return(false);
                // "実装されていないCtrlTypeが指定されました OneVal.fromReg()"
            }
            return(true);
        }