Autor Beitrag
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 23.04.10 12:29 
Sorry, für den unsauberen Code. Er sollte nur eine Vorgehensempfehlung sein.

1) Es lautet nicht IsRegex.Match sondern Regex.IsMatch.

2) CreateLogEntry muss natürlich statisch sein und

3) das erzeugte logEntry-Objekt zurück geben.

Das sind aber wie Jürgen schon erwähnt hat Fehler auf die man kommen kann ...
schlumsch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

alles Win :)
Delphi 2005 Prof, Delphi 2007
BeitragVerfasst: Fr 23.04.10 13:46 
Ja also ich hab`das ganze mal modifiziert, thx für die Hinweise.
(Wenn ich die Methode stastisch deklariere und logentry returne bekomme
ich ebenfalls einen Fehler)
Sieht derzeit so aus


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
        private LogEntry()
        {
        }

        public LogEntry(String line)
        {
            Attribute = new Dictionary<stringstring>();
            LogEntry logEntry = new LogEntry();
            string[] args = line.Split('|');

            logEntry.Zeit1 = DateTime.Parse(args[0]);
            logEntry.Zeit2 = DateTime.Parse(args[1]);
            logEntry.Name = args[2];

            for (int i = 3; i < args.Length; i++)
            {
                string[] keyValue = args[i].Split(':');

                Attribute.Add(keyValue[0], keyValue[1]);
            }
            
        }



ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
        static void Main(string[] args)
        {
            string[] lines = File.ReadAllLines("Application.log");
            List<LogEntry> logEntries = new List<LogEntry>();

            foreach (var line in lines)
            {
                    logEntries.Add(new LogEntry(line));
            }


danke euch

_________________
icq 102779206
"God is real, unless declared integer..."
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 23.04.10 13:58 
Entweder oder, aber nicht zwei Verfahren mischen.
Kha hat folgendes geschrieben:
Statt einer statischen Methode bietet sich hier auch an, CreateLogEntry einfach zu einem Konstruktor zu machen (logEntry darin dann durch this ersetzen).

Also so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
        public LogEntry(String line)
        {
            Attribute = new Dictionary<stringstring>();
            // weg: LogEntry logEntry = new LogEntry();
            string[] args = line.Split('|');
            // und hier logEntry durch this ersetzen (und this ist unnötig)
            Zeit1 = DateTime.Parse(args[0]);
            Zeit2 = DateTime.Parse(args[1]);
            Name = args[2];

            for (int i = 3; i < args.Length; i++)
            {
                string[] keyValue = args[i].Split(':');

                Attribute.Add(keyValue[0], keyValue[1]);
            }
            
        }

Gruß Jürgen
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 23.04.10 14:25 
Das halte ich nicht für sinnvoll. Ich würde sogar einen Schritt weiter gehen und eine CreateLogEntryFactory machen. Den ich glaube die "Quelle" wird sich ändern und dann wäre er flexibel (vergleiche Thread 99081).

Aber hauptsache es tut ...
schlumsch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

alles Win :)
Delphi 2005 Prof, Delphi 2007
BeitragVerfasst: Fr 23.04.10 14:37 
Ja ich habe auch noch ein wenig rumgebastelt und meinen Konstruktor mittlerweile derart geschrieben

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
        public LogEntry(String line)
        {
            Attribute = new Dictionary<stringstring>();
           // LogEntry logEntry = new LogEntry();
            string[] args = line.Split('|');

            this.Zeit1 = DateTime.Parse(args[0]);
            this.Zeit2 = DateTime.Parse(args[1]);
            this.Name = args[2];

            for (int i = 3; i < args.Length; i++)
            {
                string[] keyValue = args[i].Split(':');

                this.Attribute.Add(keyValue[0], keyValue[1]);
            }
            
        }


Derzeit stellt sich aber eher ein Problem bei der Serialisierung.


Wenn ich logentries gefüllt habe und damit meine XML-Methode aufrufe writeXml_Test_2 dann bekomme ich das hioer:
### There was an error reflecting type 'System.Collections.Generic.List`1[Datenmodell.LogEntry]'.


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
        public static void writeXml_Test_2(List<LogEntry> dieLogEntries)
        {

            XmlSerializer serializer = new XmlSerializer(typeof(List<Datenmodell.LogEntry>));
            FileStream fs = new FileStream("horst2.xml", FileMode.Create);
            serializer.Serialize(fs, dieLogEntries);
            fs.Close();


        }



Unklar ist mir nur, dass ich das Serialisieren schon vorher mit der ursprünglich von mir erstellten Klasse ExerciseStart
probiert habe und dort funktioniert es wunderbar... Sieht da jemand von euch das Problem?

ausblenden C#-Quelltext
1:
2:
3:
4:
            List<ExerciseStart> testListe = new List<ExerciseStart>();
            testListe.Add(exercise1);
            testListe.Add(exercise2);
            writeXml_Test(testListe);


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
        public static void writeXml_Test(List<ExerciseStart> dieListe)
        {

            XmlSerializer serializer = new XmlSerializer(typeof(List<Datenmodell.ExerciseStart>));
            FileStream fs = new FileStream("horst.xml", FileMode.Create);
            serializer.Serialize(fs, dieListe);
            fs.Close();


        }

}

_________________
icq 102779206
"God is real, unless declared integer..."
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 23.04.10 17:37 
Ich glaube, dieser Thread ist schon komplex genug, konzentrieren wir uns hier lieber wirklich nur auf das Einlesen ;) . Mach für deine Frage zur Serialisierung also bitte einen neuen Thread auf :) (IO sollte immer noch passen).

_________________
>λ=
schlumsch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

alles Win :)
Delphi 2005 Prof, Delphi 2007
BeitragVerfasst: Mo 26.04.10 10:39 
kay :)

_________________
icq 102779206
"God is real, unless declared integer..."