Probleme beim Datei einlesen mit C#
Verfasst: Montag 3. September 2012, 10:57
Hallo,
ja der Titel ist nicht wirklich aussagekräftig aber derzeit fällt mir nichts anderes ein. Ich lese per StreamReader eine Datei und möchte sie zeilenweise überprüfen. Das ist soweit nicht das Problem, das Problem ist: Ich lese die Datei und lass mir zeilenweise den Inhalt ausgeben. Dabei zeigt sich, das ich nur vllt. 5-6 Zeilen ausgegeben bekomme und der Rest einfach übersprungen wird. Der Zeiger beginnt auch gar nicht bei der ersten Zeile sondern fängt einfach mal bei der 3 oder 4 an.
Ich versuche das mal in Stichworten zusammenzufassen (ich bin recht schlecht in Erklären):
Was soll gemacht werden?
1. Datei einlesen
2. Jede Zeile auf ein bestimmtes Muster überprüfen
3. Ergebnis in eine DataTable speichern
Problem
1. Der Zeiger beginnt, bei der eingelesenen Datei nicht in der 1. Zeile
2. Es werden nur wenige Zeilen gelesen, nicht alle
Aktueller Code
Anm: Wir benutzen IronPython
DetailsBox.Show() ist eine Firmeninterne Klasse und zeigt einfach einen Windowsdialog mit dem angegebenen Inhalt an. Die Fehlerbehandlung in Python ist halt der Oberwitz (zumindest bei uns im Betrieb). Es wird zwar ein Fehler angezeigt mit Stacktrace, aber die Zeilenangabe fehlt halt und man verbringt Stunden damit den Fehler einzukreisen...
Naja, ich hoffe mir kann geholfen werden
Danke und Gruß
Fortuna
ja der Titel ist nicht wirklich aussagekräftig aber derzeit fällt mir nichts anderes ein. Ich lese per StreamReader eine Datei und möchte sie zeilenweise überprüfen. Das ist soweit nicht das Problem, das Problem ist: Ich lese die Datei und lass mir zeilenweise den Inhalt ausgeben. Dabei zeigt sich, das ich nur vllt. 5-6 Zeilen ausgegeben bekomme und der Rest einfach übersprungen wird. Der Zeiger beginnt auch gar nicht bei der ersten Zeile sondern fängt einfach mal bei der 3 oder 4 an.
Ich versuche das mal in Stichworten zusammenzufassen (ich bin recht schlecht in Erklären):
Was soll gemacht werden?
1. Datei einlesen
2. Jede Zeile auf ein bestimmtes Muster überprüfen
3. Ergebnis in eine DataTable speichern
Problem
1. Der Zeiger beginnt, bei der eingelesenen Datei nicht in der 1. Zeile
2. Es werden nur wenige Zeilen gelesen, nicht alle
Aktueller Code
Anm: Wir benutzen IronPython
Code: Alles auswählen
def fp_AnalyseFiles(pDt1):
try:
DetailsBox.Show("Start der Dateianalyse.")
#mStrStartPath enthält einen gültigen Pfad.
DetailsBox.Show(mStrStartPath)
dt1 = DataTable("Analyses")
dt1.Columns.Add("number").AutoIncrement = True
dt1.Columns.Add("incrementalpath")
dt1.Columns.Add("line")
dt1.Columns.Add("string")
dt1.Columns.Add("filename")
dt1.Columns.Add("extension")
#Durchlaufen der DataTable pDt1.
for row1 in pDt1.Rows:
#Entfernen des ersten Backslashs und anschließendes Speichern in einer Variable
strIncrementalPath = row1["incrementalpath"].Substring(1)
#Zusammenfügen des Startpfads und des Inkrementalpfads
strFile = Path.Combine(mStrStartPath, strIncrementalPath)
#Überprüfen ob die Datei existiert.
if File.Exists(strFile):
#Datei öffnen und lesen.
objFile = StreamReader(strFile)
DetailsBox.Show(strFile)
while objFile.ReadLine():
#@TODO
#Den Inhalt auf clr-Einträge per Regex überprüfen.
#Muster des Regulären Ausdrucks. (NICHT FERTIG)
#Das aktuelle Pattern matched "import clr" und alle Zeilen, die ein "clr.*" enthalten
#Das Pattern wurde getestet und funktioniert.
strPattern = r"^(import\sclr|clr\.[\w+]+\([a-z0-9\.\,\"]+\))$"
objRegex = Regex(strPattern)
#Beinhaltet die Anzahl an gefundenen Treffern.
objMatch = objRegex.Match(objFile.ReadLine())
DetailsBox.Show(objFile.ReadLine() + objMatch.Value)
#Wenn Treffer gefunden wurden, lege eine neue Zeile an.
if (objMatch.Success == True):
row2 = dt1.NewRow()
row2["incrementalpath"] = row1["incrementalpath"]
row2["filename"] = row1["filename"]
row2["extension"] = row1["extension"]
dt1.Rows.Add(row2)
objFile.Close()
return dt1
except Exception as ex:
DetailsBox.Show(ex)
Naja, ich hoffe mir kann geholfen werden
Danke und Gruß
Fortuna