Beispiel #1
0
        public clsMedlem(string pCsvString)
        {
            m_CsvString = pCsvString;
            m_Csv       = new clsCsv();
            m_Csv.ln    = CsvString;
            m_Csv.todo  = CsvToDoType.fdUpdateClsMedlem;

            clsCsv.MedlemFieldUpdate += new nsPuls3060.clsCsv.MedlemFieldUpdateHandler(On_MedlemFieldUpdate);
            ParseCsvString(ref m_Csv);
            clsCsv.MedlemFieldUpdate -= new nsPuls3060.clsCsv.MedlemFieldUpdateHandler(On_MedlemFieldUpdate);
        }
Beispiel #2
0
        public clsKartotek(string pCsvString)
        {
            m_CsvString = pCsvString;
            m_Csv       = new clsCsv();
            m_Csv.ln    = CsvString;
            m_Csv.todo  = CsvToDoType.fdUpdateClsKartotek;

            clsCsv.KartotekFieldUpdate += new nsPuls3060.clsCsv.KartotekFieldUpdateHandler(On_KartotekFieldUpdate);
            ParseCsvString(ref m_Csv);
            clsCsv.KartotekFieldUpdate -= new nsPuls3060.clsCsv.KartotekFieldUpdateHandler(On_KartotekFieldUpdate);
        }
Beispiel #3
0
        public string getUpdatedCvsString()
        {
            m_Csv      = new clsCsv();
            m_Csv.ln   = m_CsvString;
            m_Csv.todo = CsvToDoType.fdUpdateCsvString;

            clsCsv.MedlemCsvStringUpdate += new nsPuls3060.clsCsv.MedlemFieldUpdateHandler(On_MedlemCsvStringUpdate);
            ParseCsvString(ref m_Csv);
            clsCsv.MedlemCsvStringUpdate -= new nsPuls3060.clsCsv.MedlemFieldUpdateHandler(On_MedlemCsvStringUpdate);
            m_CsvString = m_Csv.ln_raw;
            return(m_CsvString);
        }
Beispiel #4
0
        public string getNewCvsString()
        {
            m_Csv      = new clsCsv();
            m_Csv.ln   = Program.memMedlemDictionary.NewMedlemCsvString(this.Nr); //Ny tom string
            m_Csv.todo = CsvToDoType.fdUpdateCsvString;

            clsCsv.MedlemCsvStringUpdate += new nsPuls3060.clsCsv.MedlemFieldUpdateHandler(On_MedlemCsvStringNew);
            ParseCsvString(ref m_Csv);
            clsCsv.MedlemCsvStringUpdate -= new nsPuls3060.clsCsv.MedlemFieldUpdateHandler(On_MedlemCsvStringNew);
            m_CsvString = m_Csv.ln_raw;
            return(m_CsvString);
        }
Beispiel #5
0
        public void Push()
        {
            object objcopy = this.MemberwiseClone();
            clsCsv cp      = (clsCsv)objcopy;

            m_ln    = m_value;
            m_lnLen = m_ln.Length;
            m_value = "";

            m_stack[m_niveau] = cp;
            m_niveau          = m_niveau + 1;
        }
Beispiel #6
0
        private void ParseCsvString(ref clsCsv Csv)
        {
            ParseStatus stat;
            FoundChars  found = FoundChars.fdNoneFound;

            Csv.nr        = 0;
            Csv.comma_end = -1;
            stat          = ParseStatus.fdParserOutsideField;

            for (Csv.n = 0; Csv.n < Csv.lnLen; Csv.n++)
            {
                switch (stat)
                {
                case ParseStatus.fdParserInField:
                    switch (Csv.ln.Substring(Csv.n, 1))
                    {
                    case ",":
                        Csv.comma_end = Csv.n;
                        Csv.fld_end   = Csv.n - 1;
                        Csv.nr++;
                        Csv.value = Csv.ln.Substring(Csv.fld_start, Csv.fld_end - Csv.fld_start + 1);
                        if (Csv.multifld == true)
                        {
                            Csv.Push();
                            ParseCsvString(ref Csv);
                            Csv.Pop();
                        }
                        Csv.todoAction();
                        stat = ParseStatus.fdParserOutsideField;
                        break;

                    default:
                        if (Csv.n == Csv.lnLen - 1)         // End of line condition
                        {
                            Csv.comma_end = Csv.n + 1;
                            Csv.fld_end   = Csv.n;
                            Csv.nr++;
                            Csv.value = Csv.ln.Substring(Csv.fld_start, Csv.fld_end - Csv.fld_start + 1);
                            if (Csv.multifld == true)
                            {
                                Csv.Push();
                                ParseCsvString(ref Csv);
                                Csv.Pop();
                            }
                            Csv.todoAction();
                            stat = ParseStatus.fdParserOutsideField;
                        }
                        break;
                    }
                    break;

                case ParseStatus.fdParserInFieldQuoted:
                    switch (Csv.ln.Substring(Csv.n, 2))
                    {
                    case "\"\"":           //Double quote
                        if ((found & FoundChars.fdDoubleQuoteFound) != FoundChars.fdDoubleQuoteFound)
                        {
                            found = found | FoundChars.fdDoubleQuoteFound;
                        }
                        Csv.n++;
                        break;

                    case "\",":            //Quote + comma
                        Csv.comma_end = Csv.n + 1;
                        Csv.fld_end   = Csv.n - 1;
                        Csv.nr++;
                        Csv.value = Csv.ln.Substring(Csv.fld_start, Csv.fld_end - Csv.fld_start + 1);
                        if (Csv.multifld)
                        {
                            Csv.Push();
                            ParseCsvString(ref Csv);
                            Csv.Pop();
                        }
                        Csv.todoAction();
                        Csv.n++;
                        stat = ParseStatus.fdParserOutsideField;
                        break;

                        #region Found chars
                    default:
                        switch (Csv.ln.Substring(Csv.n, 1))
                        {
                        case " ":
                            if ((found & FoundChars.fdBlankFound) == FoundChars.fdBlankFound)
                            {
                                found = found | FoundChars.fdBlankFound;
                            }
                            break;

                        case ",":
                            if ((found & FoundChars.fdCommaFound) == FoundChars.fdCommaFound)
                            {
                                if ((found & FoundChars.fdMoreCommasFound) != FoundChars.fdMoreCommasFound)
                                {
                                    found = found | FoundChars.fdMoreCommasFound;
                                }
                            }
                            else
                            {
                                found = found | FoundChars.fdCommaFound;
                            }
                            break;

                        case "\"":
                            if ((found & FoundChars.fdQuoteFound) != FoundChars.fdQuoteFound)
                            {
                                found = found | FoundChars.fdQuoteFound;
                            }
                            break;

                        case "0":
                        case "1":
                        case "2":
                        case "3":
                        case "4":
                        case "5":
                        case "6":
                        case "7":
                        case "8":
                        case "9":
                            if ((found & FoundChars.fdNumberFound) != FoundChars.fdNumberFound)
                            {
                                found = found | FoundChars.fdNumberFound;
                            }
                            break;

                        case "+":
                        case "-":
                            if ((found & FoundChars.fdSignFound) != FoundChars.fdSignFound)
                            {
                                found = found | FoundChars.fdSignFound;
                            }
                            break;

                        case ".":
                            if ((found & FoundChars.fdDotFound) != FoundChars.fdDotFound)
                            {
                                found = found | FoundChars.fdDotFound;
                            }
                            break;


                        default:
                            if ((found & FoundChars.fdAlfaFound) != FoundChars.fdAlfaFound)
                            {
                                found = found | FoundChars.fdAlfaFound;
                            }
                            break;
                        }
                        break;
                        #endregion
                    }
                    break;

                case ParseStatus.fdParserInFieldDoubleQuoted:
                    switch (Csv.ln.Substring(Csv.n, 3))
                    {
                    case "\"\",":          //Double Quote + comma
                        Csv.comma_end = Csv.n + 2;
                        Csv.fld_end   = Csv.n - 1;
                        Csv.nr++;
                        Csv.value = Csv.ln.Substring(Csv.fld_start, Csv.fld_end - Csv.fld_start + 1);
                        Csv.todoAction();
                        Csv.n += 2;
                        stat   = ParseStatus.fdParserOutsideField;
                        break;

                        #region Found chars
                    default:
                        switch (Csv.ln.Substring(Csv.n, 1))
                        {
                        case " ":
                            if ((found & FoundChars.fdBlankFound) == FoundChars.fdBlankFound)
                            {
                                found = found | FoundChars.fdBlankFound;
                            }
                            break;

                        case ",":
                            if ((found & FoundChars.fdCommaFound) == FoundChars.fdCommaFound)
                            {
                                if ((found & FoundChars.fdMoreCommasFound) != FoundChars.fdMoreCommasFound)
                                {
                                    found = found | FoundChars.fdMoreCommasFound;
                                }
                            }
                            else
                            {
                                found = found | FoundChars.fdCommaFound;
                            }
                            break;

                        case "\"":
                            if ((found & FoundChars.fdQuoteFound) != FoundChars.fdQuoteFound)
                            {
                                found = found | FoundChars.fdQuoteFound;
                            }
                            break;

                        case "0":
                        case "1":
                        case "2":
                        case "3":
                        case "4":
                        case "5":
                        case "6":
                        case "7":
                        case "8":
                        case "9":
                            if ((found & FoundChars.fdNumberFound) != FoundChars.fdNumberFound)
                            {
                                found = found | FoundChars.fdNumberFound;
                            }
                            break;

                        case "+":
                        case "-":
                            if ((found & FoundChars.fdSignFound) != FoundChars.fdSignFound)
                            {
                                found = found | FoundChars.fdSignFound;
                            }
                            break;

                        case ".":
                            if ((found & FoundChars.fdDotFound) != FoundChars.fdDotFound)
                            {
                                found = found | FoundChars.fdDotFound;
                            }
                            break;

                        default:
                            if ((found & FoundChars.fdAlfaFound) != FoundChars.fdAlfaFound)
                            {
                                found = found | FoundChars.fdAlfaFound;
                            }
                            break;
                        }
                        break;
                        #endregion
                    }
                    break;

                case ParseStatus.fdParserOutsideField:
                    switch (Csv.ln.Substring(Csv.n, 1))
                    {
                    case ",":
                        stat = ParseStatus.fdParserOutsideField;
                        Csv.nr++;
                        Csv.comma_start = Csv.comma_end;
                        Csv.comma_end   = Csv.n;
                        Csv.fld_start   = Csv.n;
                        Csv.fld_end     = Csv.n - 1;
                        Csv.value       = Csv.ln.Substring(Csv.fld_start, Csv.fld_end - Csv.fld_start + 1);
                        if (Csv.multifld)
                        {
                            Csv.Push();
                            ParseCsvString(ref Csv);
                            Csv.Pop();
                        }
                        Csv.todoAction();
                        break;

                    case "\"":
                        if (Csv.ln.Substring(Csv.n, 3) == "\"\"\"")         //Trible quote
                        {
                            stat            = ParseStatus.fdParserInFieldQuoted;
                            found           = FoundChars.fdNoneFound;
                            Csv.comma_start = Csv.comma_end;
                            Csv.fld_start   = Csv.n + 1;
                        }
                        else if (Csv.ln.Substring(Csv.n, 2) == "\"\"")         //Double quote
                        {
                            stat            = ParseStatus.fdParserInFieldDoubleQuoted;
                            Csv.comma_start = Csv.comma_end;
                            found           = FoundChars.fdNoneFound;
                            Csv.fld_start   = Csv.n + 2;
                            Csv.n++;
                        }
                        else         //Single quote
                        {
                            stat            = ParseStatus.fdParserInFieldQuoted;
                            found           = FoundChars.fdNoneFound;
                            Csv.comma_start = Csv.comma_end;
                            Csv.fld_start   = Csv.n + 1;
                        }
                        break;

                    default:
                        stat            = ParseStatus.fdParserInField;
                        Csv.comma_start = Csv.comma_end;
                        Csv.fld_start   = Csv.n;
                        break;
                    }
                    break;
                }
            }
        }