HELP: ArgumentOutOfRange-Exception beim lesen einer File
__Luki__ 09.11.2011 - 14:39 3584 6
__Luki__
bierernste Islandkritik
|
Servus Maenner! Ich hab' ein dringendes Problem. :> Gestern habe ich das Config-File eines Programms minimal veraendert und dieses funktioniert seither nicht mehr. (super, gell  ) Nun suche ich schon Stunden nach dem Fehler, schaffe es aber nicht und bin mit meinem Latein langsam am Ende... Das Programm, um welches es geht ist ein kleines Tool, welches Ordner archivieren soll; diese Ordner werden im ini-File deklariert (dieses habe ich auch veraendert...) #[source Folder];[destination Folder];[days left];[renaming]
P:\daten\aus;Y:\ein_aus_archiv\daten\aus;1;
P:\daten\ein;Y:\ein_aus_archiv\daten\ein;60;
Seit meiner Aenderung bekomme ich aber vom Programmteil, welcher das File einliest eine ArgumentOutOfRange-Exception und ich verstehe einfach nicht warum :> using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;
namespace NightArchive.Klassen
{
class IniReader
{
private FileInfo iniFile;
public IniReader(String iniPath)
{
this.iniFile = new FileInfo(iniPath);
}
public CheckDir[] getCheckDirs()
{
StreamReader sr = new StreamReader(iniFile.FullName);
String line;
ArrayList result = new ArrayList();
string destDir;
while ((line = sr.ReadLine()) != null)
{
if (line.Substring(0, 1) != "#")
{
String[] paths = line.Split(';');
if (paths[1].Trim() != "")
{
DateTime gestern = DateTime.Now;
gestern = gestern.AddDays(-1);
destDir = paths[1] + "__" + gestern.ToString("yyyy_MM");
}
else destDir = "";
if (paths.Count() == 2)
{
result.Add(new CheckDir(paths[0], destDir));
}
else if (paths.Count() == 3)
{
int days;
int.TryParse(paths[2].Trim(), out days);
result.Add(new CheckDir(paths[0], destDir, days));
}
else if (paths.Count() == 4)
{
int days;
int.TryParse(paths[2].Trim(), out days);
result.Add(new CheckDir(paths[0], destDir, days, paths[3].Trim()));
}
}
}
sr.Close();
return (CheckDir[])result.ToArray(typeof(CheckDir));
}
}
}
Hier noch einmal die genaue Fehlermeldung: Unbehandelte Ausnahme: System.ArgumentOutOfRangeException: Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen.
Parametername: length
bei System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
bei System.String.Substring(Int32 startIndex, Int32 length)
bei NightArchive.Klassen.IniReader.getCheckDirs() in \\win01\win\NightArchive\NightArchive\Klassen\IniReader.cs:Zeile 29.
bei NightArchive.Program.Main(String[] args) in \\win01\win\NightArchive\NightArchive\Program.cs:Zeile 22.
Um etwas Hilfe waere ich wirklich dankbar  Tia, Luki
Bearbeitet von __Luki__ am 09.11.2011, 14:50
|
quilty
Ich schau nur
|
Lösch mal die leere Zeile am Ende des ini-Files.
|
__Luki__
bierernste Islandkritik
|
 Ich bin ein Vollhonk; du bist mein Held!  Thx.
|
quilty
Ich schau nur
|
Wenn du den Code geschrieben hast, dann muss ich dir leider zustimmen.  Grauslichst!
|
Ringding
Pilot
|
OMG, die übersetzungswütigen Microsofties machen nicht einmal vor Stack Traces halt. Grauslich!
|
semteX
begehrt die rostschaufel
|
OMG, die übersetzungswütigen Microsofties machen nicht einmal vor Stack Traces halt. Grauslich!
 wer im access und excel befehle eindeutscht...
|
UncleFucka
-
|
wer im access und excel befehle eindeutscht... der kunde ist könig.
|