C# einlesen von datei

Nur mal um die Benennung der Variablen zu verdeutlichen, ohne meine vorgeschlagenen Optimierungen (das darfst du gerne selbst machen ;) ):
Code:
string bmk = "xxxxx";
try { bmk = line.Split(';')[9].ToString().Trim(); }
catch { }//notwendig da Exportdatei fehlerhaft
 
if (bmk == drWorkTable["BMK"].ToString().Trim())
{
	string[] fields = line.Split(new Char[] { ';' });
	 
	string eaAddress = fields[11].Remove(0, 1).Split('.')[0].Replace('W', '_').Trim();
	 
	switch (fields[10].Trim())
	{
		case "1":
		drWorkTable["E/A-Adresse"] = eaAddress;
		break;
		...
Ist doch schon deutlich lesbarer, oder?

Wobei mir noch auffällt, dass du, wenn du die BMK nicht auslesen kannst, trotzdem die komplette Tabelle durchgehst und nach der BMK "xxxxx" suchst...

Du bist durcheinander mit was?
 
Hey Darlis,

das habe ich schon gemacht..ich meinte, wie soll ich die überschreibung zeile vor der schleife ziehen??? das war mir nicht so klar..
Ergänzung ()

Hey Darlis,

ich habe was du geschrieben hats nochmal GUT gelesen :-) und habe's dann so gemacht:
Code:
// List<String> ImportZuLiVCAM = new List<string>();                        // in einer Auflistung einlesen

            using (StreamReader sr = new StreamReader(path, Encoding.Default))
            {
                string line;
                
                while ((line = sr.ReadLine()) != null)
                {

                    string bmk = "xxxxx";

                    try { bmk = line.Split(';')[9].ToString().Trim(); }        // String splitten
                    catch { }                                                  // notwendig da Exportdatei fehlerhaft

                                       
                    foreach (DataRow drWorkTable in dtWorkTable.Rows)
                    {
                                               
                            /*string bmk = "xxxxx";
                            
                            try { bmk = line.Split(';')[9].ToString().Trim(); }        // String splitten
                            catch { }*/                                                  // notwendig da Exportdatei fehlerhaft

                            if (bmk == drWorkTable["BMK"].ToString().Trim())
                            {
                                string[] fields = line.Split(new Char[] { ';' });      // String splitten

                                string eaAdresse = fields[11].Remove(0, 1).Split('.')[0].Replace('W', '_').Trim();   //  wiederholte Daten überschreiben

                                switch (fields[10].Trim())
                                {
                                    case "1":
                                        drWorkTable["E/A-Adresse"] = eaAdresse;
                                        break;
                                    case "2":
                                        drWorkTable["E/A-Adresse"] = eaAdresse;
                                        break;
                                    case "I1":
                                        drWorkTable["E/A-Adresse"] = eaAdresse;
                                        break;
                                    case "SI1":
                                        drWorkTable["E/A-Adresse"] = eaAdresse;
                                        break;
                                    case "FI.0":
                                        drWorkTable["E/A-Adresse"] = eaAdresse;
                                        break;
                                    case "X10:PE":
                                        drWorkTable["E/A-Adresse"] = eaAdresse;
                                        break;
                                    default:
                                        break;
                                }
                            }
                        
                    }
                    
                }
                return dtWorkTable;
            }
        }

und es funktioniert sehr gut :-D in genau 7s bekomme ich die dtWorkTable raus :-D

wie du es auch siehst ich habe das List<string> auch weg gemacht. hat kein einfluss mehr gehabt.

vielen Dank
Ergänzung ()

jetzt stehe ich wieder vor nächste kleine mauer. und zwar in meiner erzeugte dtWorkTable sind zeilen die ich nicht brauche. da keine eaAdresse zugewiesen ist zu den Gerät.

ich habe Templates erstellt (.cfg datei) zu jeden Geräte der ich brauchen werde. Die templates sind dann auch nach der gerätenummer benannt, die schon in der tabelle vorkommt. habe mir dann überlegt, entweder lösche ich die zeilen, was mich nicht so viel helfen kann. oder ich wurde gern beim einlesen der DataTable überprüfen, ob der dazu gehörige Template vorhanden ist und dann einlesen.

WIE?? (ich versuche schon das zu lösen)
 
Zuletzt bearbeitet:
Ich sehe da immer noch deutlichen Optimierungsbedarf. Aber wenn die Laufzeit für dich in Ordnung ist...

Ich verstehe aber nicht, was genau du jetzt vorhast. Verwechselst du vielleicht Template mit Konfigurationsdatei? Wozu brauchst du ein Template / eine Konfiguration pro Gerät?

Reicht nicht einfach eine Liste mit Geräten, die du in einer einzelnen Konfigurationsdatei abspeicherst?
 
Ja, habe ich.
 
Zurück
Oben