public void WriteRecord(BinaryWriter writer)
        {
            writer.Write((int)RecordType);
            writer.Write(Type);
            writer.Write(HasVariableLabel ? 1 : 0);
            writer.Write(MissingValueType);
            writer.Write(PrintFormat?.GetInteger() ?? 0);
            writer.Write(WriteFormat?.GetInteger() ?? 0);

            writer.Write(_nameRaw);

            if (HasVariableLabel)
            {
                writer.Write(LabelLength);
                writer.Write(_labelRaw);
            }

            if (MissingValueType != 0)
            {
                for (int i = 0; i < MissingValues.Count && i < _missingValueCount; i++)
                {
                    writer.Write(MissingValues[i]);
                }
            }
        }
Beispiel #2
0
        private void ProcessByIndividual(WriteFormat method, List <TbTitle> titles, List <TbTitleInfo> titleInfos, string filename)
        {
            var    aaa   = Encoding.Default;
            string nPath = Path.Combine(mOutputPath, filename);

            using (FileStream fs = new FileStream(nPath, FileMode.Create))
                using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
                {
                    method.WriteHead(sw, filename);

                    var queue = from titleInfo in titleInfos
                                orderby Convert.ToInt32(titleInfo.str[3]), titleInfo.str[2]
                    select titleInfo;

                    foreach (var titleInfo in queue)
                    {
                        method.WriteBegin(sw);

                        var title = titles.Find(o => o.id == titleInfo.str[0]);
                        method.WriteNumber(sw, titleInfo.str[3]);
                        string name = "";
                        if (titleInfo.str[2] != "0")
                        {
                            name = (titleInfo.str[2] == "1") ? "哈露" :
                                   (titleInfo.str[2] == "2") ? "歐文" :
                                   (titleInfo.str[2] == "3") ? "莉莉" :
                                   (titleInfo.str[2] == "4") ? "金" :
                                   (titleInfo.str[2] == "5") ? "史黛菈" :
                                   (titleInfo.str[2] == "6") ? "伊莉絲" : "琪";
                        }
                        method.WriteCharacter(sw, name);

                        method.WriteTitle(sw, title.str[0]);
                        method.WriteDescription(sw, title.str[1]);
                        method.WriteObtain(sw, title.str[2]);

                        if (titleInfo.str[12] == "0" && titleInfo.str[13] == "0" && titleInfo.str[14] == "0" && titleInfo.str[15] == "0" && titleInfo.str[16] == "0")
                        {
                            method.WriteNoEffect(sw);
                        }
                        else
                        {
                            List <string> effects = new List <string>();
                            if (titleInfo.str[12] != "0")
                            {
                                effects.Add($"{GetValue(titleInfo.str[12])}:{titleInfo.str[17]}");
                            }
                            if (titleInfo.str[13] != "0")
                            {
                                effects.Add($"{GetValue(titleInfo.str[13])}:{titleInfo.str[18]}");
                            }
                            if (titleInfo.str[14] != "0")
                            {
                                effects.Add($"{GetValue(titleInfo.str[14])}:{titleInfo.str[19]}");
                            }
                            if (titleInfo.str[15] != "0")
                            {
                                effects.Add($"{GetValue(titleInfo.str[15])}:{titleInfo.str[20]}");
                            }
                            if (titleInfo.str[16] != "0")
                            {
                                effects.Add($"{GetValue(titleInfo.str[16])}:{titleInfo.str[21]}");
                            }
                            method.WriteEffect(sw, effects.ToArray());
                        }

                        method.WriteEnd(sw);
                    }

                    method.WriteTail(sw);
                }
        }
Beispiel #3
0
        public void Log(string logString, Level logLevel, DateTime dateTime, WriteFormat format)
        {
            XmlDocument xml = new XmlDocument();

            xml.Load("App1.config");
            string[] readFromXML = new string[3];
            int      i           = 0;

            foreach (XmlElement element in xml.GetElementsByTagName("add"))
            {
                if (element.Attributes["key"] == null)
                {
                    continue;
                }
                readFromXML[i] = element.Attributes["value"].Value;
                i++;
            }

            Level logg = new Level();

            switch (readFromXML[1])
            {
            case "warning":
                logg = Level.warning;
                break;

            case "debug":
                logg = Level.debug;
                break;

            case "error":
                logg = Level.error;
                break;

            case "info":
                logg = Level.info;
                break;

            default:
                break;
            }

            string message = "";

            switch (logg)
            {
            case Level.warning:
                message = LogWarn(logString);
                Console.WriteLine(LogWarn(logString));
                break;

            case Level.debug:
                message = LogDebug(logString);
                Console.WriteLine(LogDebug(logString));
                break;

            case Level.error:
                message = LogError(logString);
                Console.WriteLine(LogError(logString));
                break;

            case Level.info:
                message = LogInfo(logString);
                Console.WriteLine(LogInfo(logString));
                break;

            default:
                Console.WriteLine("change config file");
                break;
            }

            WriteFormat wf         = new WriteFormat();
            XMLLogger   xmlLogger  = new XMLLogger();
            JSONLogger  jsonLogger = new JSONLogger();

            switch (readFromXML[2])
            {
            case "plain":
                wf = WriteFormat.plain;
                break;

            case "xml":
                wf = WriteFormat.xml;
                break;

            case "json":
                wf = WriteFormat.json;
                break;

            default:
                break;
            }


            switch (wf)
            {
            case WriteFormat.json:
                jsonLogger.WriteLog(message, readFromXML[0]);
                break;

            case WriteFormat.plain:
                WriteLog(message, readFromXML[0]);
                break;

            case WriteFormat.xml:
                xmlLogger.WriteLog(message, readFromXML[0]);
                break;

            default:
                break;
            }
        }