"We are back" « oc.at

HELP: ArgumentOutOfRange-Exception beim lesen einer File

__Luki__ 09.11.2011 - 14:39 3584 6
Posts

__Luki__

bierernste Islandkritik
Avatar
Registered: Nov 2003
Location: gradec
Posts: 3002
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 :D)

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...)

Code:
#[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 :>

Code: CSHARP
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() != "")
                    {
                        //Er zieht den einen Tag nicht ab der eben für das gestriege Datum steht
                        DateTime gestern = DateTime.Now;
                        gestern = gestern.AddDays(-1);
                        
                        destDir = paths[1] + "__" + gestern.ToString("yyyy_MM");
                    }
                    else destDir = "";
                    if (paths.Count() == 2)
                    {

                        //String dirName = paths[0].Remove(0,paths[0].LastIndexOf("\\"));
                        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:
Code:
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
Avatar
Registered: Jul 2005
Location: 4202
Posts: 3118
Lösch mal die leere Zeile am Ende des ini-Files.

__Luki__

bierernste Islandkritik
Avatar
Registered: Nov 2003
Location: gradec
Posts: 3002
:eek:
Ich bin ein Vollhonk; du bist mein Held! ;)

Thx.

quilty

Ich schau nur
Avatar
Registered: Jul 2005
Location: 4202
Posts: 3118
Wenn du den Code geschrieben hast, dann muss ich dir leider zustimmen. :) Grauslichst!

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
OMG, die übersetzungswütigen Microsofties machen nicht einmal vor Stack Traces halt. Grauslich!

:eek: :eek:

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14811
Zitat von Ringding
OMG, die übersetzungswütigen Microsofties machen nicht einmal vor Stack Traces halt. Grauslich!

:eek: :eek:
wer im access und excel befehle eindeutscht...

UncleFucka

-
Avatar
Registered: Jun 2002
Location: CH
Posts: 4737
Zitat von semteX
wer im access und excel befehle eindeutscht...

der kunde ist könig.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz