Entwickler-Ecke

C# - Die Sprache - Hilfe bei Programmerweiterung


matze0504 - Do 28.01.10 16:56
Titel: Hilfe bei Programmerweiterung
Servus,

ich habe hier ein riesen Problem. (Für mich zumindest) :(

Ich bin im Programmieren eine totale Niete! Jedoch habe ich bei uns in der Feuerwehr nun ein Programm bekommen, das ich erweitern soll. Ich habe mich nun schon seit 4 Wochen damit auseinander gesetzt. Jedoch komme ich nicht wirklich dahinter, was da abläuft bzw. wie ich es erweitern kann.

Kann mir jemand helfen?

Es ist so. Bei uns kommt bei einem Einsatz ein Fax an. Dies wird derzeit ausgewertet und in eine Datenbank gespeichert. Das läuft auch alles wunderbar. Nur soll die Auswertung des Faxes nun erweitert werden. Hier ist mal ein Teil des derzeitigen Codes:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
public Einsatz ParseEinsatz(string file)
        {
            Einsatz einsatz = new Einsatz();
            string str = string.Empty;
            bool flag = true;
            int num = 0;
            while (flag)
            {
                flag = false;
                num++;
                try
                {
                    StreamReader reader = new StreamReader(file);
                    while ((str = reader.ReadLine()) != null)
                    {
                        int index = str.IndexOf(':');                        
 
                        if (index != -1)
                        {
                            string str3 = str.Substring(0, index);
                            string str2 = str.Substring(index + 1).Trim();
                            if (this.replaceList != null)
                            {
                                foreach (ReplaceString str4 in this.replaceList)
                                {
                                    str2 = str2.Replace(str4.OldString, str4.NewString);
                                }
                            }
                            switch (str3.Trim().ToUpperInvariant())
                            {
                                case "E — NR":
                                    einsatz.Einsatznr = str2;
                                    break;
                                case "MITTEILER":
                                    einsatz.Mitteiler = str2;
                                    break;
                                case "EINSATZORT":
                                    einsatz.Einsatzort = str2;
                                    break;
                                case "STRA\x00dfE":
                                case "STRABE":
                                    einsatz.Strasse = str2;
                                    break;
                                case "KREUZUNG":
                                    einsatz.Kreuzung = str2;
                                    break;
                                case "ORTSTEIL/ORT":
                                    einsatz.Ort = str2;
                                    break;
                                case "OBJEKT":
                                case "9BJEKT":
                                    einsatz.Objekt = str2;
                                    break;
                                case "MELDEBILD":
                                    einsatz.Meldebild = str2;
                                    break;
 
                                case "HINWEIS":
                                    einsatz.Hinweis = str2;
                                    break;
                                case "EINSATZSTICHWORT":
                                    einsatz.Einsatzstichwort = str2;
                                    break;
                                case "EINSATZPLAN":
                                    einsatz.Einsatzplan = str2;
                                    break;
 
 
 
                               }
 
                        }
 
 
                    }
                    reader.Close();
                    continue;
                }
                catch (FileNotFoundException exception)
                {
                    if (num < 10)
                    {
                        flag = true;
                        Thread.Sleep(0x3e8);
                        this.logger.WriteWarning("Ocr file not found. Try " + num.ToString(CultureInfo.InvariantCulture) + " of 10!");
                    }
                    else
                    {
                        this.logger.WriteError("Ocr File not found! " + exception.ToString());
                    }
                    continue;
                }
                catch (Exception exception2)
                {
                    this.logger.WriteError(exception2.ToString());
                    continue;
                }
            }
            return einsatz;

Danke.

Gruß

Matze

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Christian S. - Do 28.01.10 16:58

Hallo und :welcome:!

Was ist denn jetzt genau Dein Problem bzw. was erwartest Du von uns? :gruebel: :nixweiss:

Grüße
Christian


matze0504 - Do 28.01.10 17:03

Oh mann sorry. Das hätte man ja auch dazu schreiben sollen. ;-)

Die Auswertung des Faxes geht derzeit bis Einsatzplan. Ich würde aber gerne die alarmierten Fahrzeuge auch noch in die Datenbank übernehmen um diese dann am Bildschirm anzeigen zu können. Jedoch scheint es mir, das nur Zeilen ausgewertet werden, wo ein : nach dem Wort steht und das ist ja bei den Fahrzeugen nicht so.

Gruß

Matthias


danielf - Do 28.01.10 17:10

Das File welches eingelesen wird ist doch nicht das Tif aus dem Archiv oder?

Die Frage ist wie das File welches du Einließt aussieht. Falls dieses noch mehr Infos hat, kannst du dein Einsatz-Objekt erweitern und die dann wiederum da reinschreiben. Die Datenbank müsstest du ggf. auch Erweitern. KOmmt halt drauf an wie die Struktur aussieht.

Aber fürs erste wäre es wichtig, wie dein EIngabedatei aussieht.

Gruß Daniel


matze0504 - Do 28.01.10 17:32

Also das Fax kommt als Tif an und wir dann als txt mit einer OCR Software umgewandelt.

Ich habe die txt-datei auch mal angehängt.

Darin geht es dann um die Einsatzmittel.

Das Problem ist das dort je nach Einsatz verschiedene und auch mehrer Fahrzeuge drin sind. Also muss man irgendwie nach den richtigen suchen.


danielf - Do 28.01.10 17:34

Ich glaub da wird ein Edit fällig ... das war nicht die txt.


matze0504 - Do 28.01.10 17:39

Da haste wohl recht. Kommt davon wenn man mehrere Sachen gleichzeitig macht. Also ein neuer Versuch!


danielf - Do 28.01.10 19:05

Hmm.. hässliches Format.

Vlt. kannst kannst du folgendes als Ansatz nehmen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
            FileInfo fi = new FileInfo(file);

            string[] words = fi.OpenText().ReadToEnd().Replace("\r\n"" ").Replace("E — Nr""E-NR").Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);

            Dictionary<stringstring> keyValues = new Dictionary<stringstring>();

            string group = null;
            StringBuilder sb1 = new StringBuilder();
            foreach (var item in words)
            {
                if (item.Contains(':'))
                {
                    if (group != null)
                    {
                        keyValues.Add(group, sb1.ToString());
                        sb1 = new StringBuilder();
                    }

                    group = item.TrimEnd(':');
                }
                else if (item.Equals("(ALARMSCHREIBEN"))
                {
                    keyValues.Add(group, sb1.ToString());
                    break;
                }
                else if (group != null)
                {
                    if (sb1.Length > 0)
                    {
                        sb1.Append(" ");
                    }

                    sb1.Append(item);
                }
            }

            foreach (var item in keyValues)
            {
                Console.WriteLine(string.Format("{0}: {1}", item.Key, item.Value));
            }

Gruß Daniel