HELP: ArgumentOutOfRange-Exception beim lesen einer File

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/help-argumentoutofrange-exception-beim-lesen-einer-file_227192/page_1 - zur Vollversion wechseln!


__Luki__ schrieb am 09.11.2011 um 14:39

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


quilty schrieb am 09.11.2011 um 14:45

Lösch mal die leere Zeile am Ende des ini-Files.


__Luki__ schrieb am 09.11.2011 um 14:50

:eek:
Ich bin ein Vollhonk; du bist mein Held! ;)

Thx.


quilty schrieb am 09.11.2011 um 14:51

Wenn du den Code geschrieben hast, dann muss ich dir leider zustimmen. :) Grauslichst!


Ringding schrieb am 09.11.2011 um 15:00

OMG, die übersetzungswütigen Microsofties machen nicht einmal vor Stack Traces halt. Grauslich!

:eek: :eek:


semteX schrieb am 15.11.2011 um 23:40

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 schrieb am 15.11.2011 um 23:46

Zitat von semteX
wer im access und excel befehle eindeutscht...

der kunde ist könig.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025