Zum Inhalt springen

INI-Datei durchsuchen


titan999

Empfohlene Beiträge

Hallo,

ich bin gerade dabei ein kleines Tool zu erstellen. Da ich aber noch ziemlcher Anfänger bei .NET bin komme ich einfach nicht weiter, bzw mir fehlt schon der Ansatz.

Ich habe in einem Ordner verschiedene Dateitypen. Unter anderem viele INI-Dateien.

Ich brauche jetzt eine Möglichkeit, alle ini-Datien (und nur die ini-Dateien) nach einem Wert zu durchsuchen.

Bei einem Treffer soll er mir in eine Textbox den Namen der INI-Datei, die Sektion (das was in den eckigen klammern steht) und den Schlüssen (das vor dem "=") hineinschreiben.

Wie mache ich sowas? Hat da jemand eine Idee wie ich an sowas ran gehen könnte?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde es für Stream lösen, weiß nicht ob das die beste Methoden ist, aber es geht aufjedenfall.

string path = "C:\\Datei";

Pfad der Datei

byte suchpara = Convert.ToByte("Parameter");

Convertiert deinen Parameter in Byte

int paralänge = 10;

Die Länge deines Parameters

byte[] arrRead = new byte[paralänge];

Erstellt ein byte-Array mit der größe der länge deines Parameters

FileStream ini_search = new FileStream(path, FileMode.Open);

Öffnet deine Datei als Stream

long search = ini_search.Seek(0, SeekOrigin.Begin);

Sucht in dem Stream nach deinem Parameter

ini_search.Read(arrRead, Convert.ToInt32(search), paralänge);

Liest den Parameter und schreibt in in das Array Read

Somit hast du eine Datei nach deinem Parameter durchsucht und in das Byte-Array geschrieben, das musst du nur noch mit einer For schleife ausgeben, eine prüfung noch ein bauen ob das element überhaupt enthalten ist und das dann auf alle dateien übertragen(zb mit einer weiteren schleife)

Ist nicht der eleganteste Ansatz aber ich bin auch nicht der Gutu in .NET

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich bin gerade dabei ein kleines Tool zu erstellen. Da ich aber noch ziemlcher Anfänger bei .NET bin komme ich einfach nicht weiter, bzw mir fehlt schon der Ansatz.

Ich habe in einem Ordner verschiedene Dateitypen. Unter anderem viele INI-Dateien.

Ich brauche jetzt eine Möglichkeit, alle ini-Datien (und nur die ini-Dateien) nach einem Wert zu durchsuchen.

Bei einem Treffer soll er mir in eine Textbox den Namen der INI-Datei, die Sektion (das was in den eckigen klammern steht) und den Schlüssen (das vor dem "=") hineinschreiben.

Wie mache ich sowas? Hat da jemand eine Idee wie ich an sowas ran gehen könnte?

Mit Directory.GetFiles() die 1/2 Überladung (ansichtssache ob 1 oder 2) bekommst du alle Files in einem String[] aus dem angegebenen Pfad und mit dem Suchmuster Suchoption kannst auch noch einstellen aber bei der 2/3 Überladung

Um Dateien zu lesen brauchst du nen Stream... z.B. StreamReader.ReadToEnd() ließt die ganze Datei...

String.IndexOF("Text") gibt dir den Index vom vorkommen

Den namen der Datei die du grad durchsuchst könntest du dir irgend wo zwischenspeichern falls du es mit for machst dann einfach übern index i zugreifen um den Datienamen zu bekommen

mit dem prinzip kannst du das letzte was du wolltest auch lösen...

für leute die nach mir posten...

bla bla bla ich weis man kanns auch in nem ca.5zeiler mit linq machen aber was bringt ihm das wenn er die lösung hat und nix checkt mit linq ? (LINQ IST JETZT NUR EIN BEISPIEL BEVOR EINER WIDER MIT WAS ANDREM DAHER KOMMT UND MICH VOLL LABBERT.... sehr üblich hier -.- )

Bearbeitet von 2K1.INC
Link zu diesem Kommentar
Auf anderen Seiten teilen

für leute die nach mir posten...

bla bla bla ich weis man kanns auch in nem ca.5zeiler mit linq machen aber was bringt ihm das wenn er die lösung hat und nix checkt mit linq ? (LINQ IST JETZT NUR EIN BEISPIEL BEVOR EINER WIDER MIT WAS ANDREM DAHER KOMMT UND MICH VOLL LABBERT.... sehr üblich hier -.- )

Ob und was für Lösungsvorschläge andere Leute hier machen hast du ganz sicher nicht zu entscheiden und vorallem solltest du andere nicht bezichtigen rumzulabern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

So, da ich vorhin mist verzapft hab will ich es hier wieder gut machen, hab hier mal was kleines geschrieben, mit dem du die InI-Datei durchsuchen kannst:

string strValue = "Parameter"; //Dein Suchparameter

StreamReader sr = new StreamReader(@"Pfad"); //Erstellt einen Streamreader auf deine Datei

string strLine = string.Empty; //Initialisiert strLine(Suchergebnis)

bool bFound = false; //Initilalisiert die Abfrage ob gefunden

while (sr.Peek() >= 0 && bFound == false) //Sucht in der Datei solang bis das Ende der Datei erreicht ist ein Fund vorliegt

{

strLine = sr.ReadLine(); //Damit liest er die Datei Zeile für Zeile in strLine

if (strLine.IndexOf(strValue) > 0) //Prüft ob in der Zeile dein gesuchter Parameter enthalten ist

{

bFound = true; //Wenn Parameter enthalten, Fund wir auf wahr gesetzt

}

}

sr.Close(); //Schließt die Datei wieder

if (true == bFound) //Wenn er fündig geworden ist dann

{

Console.WriteLine(strLine); //Gibt er die Zeile aus

}

Les dich aber lieber erstmal weiter in das ganze ein, da es viele Fehler geben kann wenn du versuchst dateien zu öffnen die es nicht mehr gibt, fehlerhaft sind oder oder oder ;-) da muss man aufpassen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ob und was für Lösungsvorschläge andere Leute hier machen hast du ganz sicher nicht zu entscheiden und vorallem solltest du andere nicht bezichtigen rumzulabern.

sry aber es ist so in dem board... einer stellt ne frage alle geben ihm die lösung aber lassn ihn selber ned mal überlegen ne einfach hier haste mach was draus aber lernen tun die wenigsten davon und gibt immer welche die sagen ginge auch leichter, mag sein leichter und komplexer vom aufbau oder willst mir sagen er würd gleich ein Linq statement verstehen ? Das ist aber nicht das Thema...

Bearbeitet von 2K1.INC
Link zu diesem Kommentar
Auf anderen Seiten teilen

Man lernt ab besten wenn es einem beigebracht wird! Ich zeige ihm nicht die Lösung sondern einen Beispielcode zu seinem Thema und schreibe auch gleich dazu was dies oder jenes macht. Damit er lernt und versteht! Mit Dingen wie Ja nimm LINQ kann er wirklich nichts Anfangen oder nimm Directory.GetFiles() da wird es ihm noch mehr die Fragezeichen raushauen, da keine wirklich erklärung dazu steht

Link zu diesem Kommentar
Auf anderen Seiten teilen

Man lernt ab besten wenn es einem beigebracht wird! Ich zeige ihm nicht die Lösung sondern einen Beispielcode zu seinem Thema und schreibe auch gleich dazu was dies oder jenes macht. Damit er lernt und versteht! Mit Dingen wie Ja nimm LINQ kann er wirklich nichts Anfangen oder nimm Directory.GetFiles() da wird es ihm noch mehr die Fragezeichen raushauen, da keine wirklich erklärung dazu steht

Lernen würde er es, wenn Du vielleicht nur die Schritte beschrieben hättest.

1.) Verzeichnisse nach Dateien durchsuchen

2.) Jede Datei als Stream einlesen

3. Stream zeilenweise auslesen.

etc...

Aber das ist meine Meinung :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

   string strValue = "Parameter"; //Dein Suchparameter

            StreamReader sr = new StreamReader(@"Pfad"); //Erstellt einen Streamreader auf deine Datei

            string strLine = string.Empty; //Initialisiert strLine(Suchergebnis)

            bool bFound = false;//Initilalisiert die Abfrage ob gefunden


            while (sr.Peek() >= 0 && bFound == false) //Sucht in der Datei solang bis das Ende der Datei erreicht ist ein Fund vorliegt

            {

                strLine = sr.ReadLine(); //Damit liest er die Datei Zeile für Zeile in strLine

                if (strLine.IndexOf(strValue) > 0)//Prüft ob in der Zeile dein gesuchter Parameter enthalten ist

                {

                    bFound = true; //Wenn Parameter enthalten, Fund wir auf wahr gesetzt 

                }

            }

            sr.Close(); //Schließt die Datei wieder

            if (true == bFound) //Wenn er fündig geworden ist dann

            {

                Console.WriteLine(strLine);//Gibt er die Zeile aus

            }

Les dich aber lieber erstmal weiter in das ganze ein, da es viele Fehler geben kann wenn du versuchst dateien zu öffnen die es nicht mehr gibt, fehlerhaft sind oder oder oder ;-) da muss man aufpassen

Das sieht ja ganz schön wüst aus. Nutze bitte das nächste mal Codetags und eventuell weniger Fonttags.

Zum Thema zurück.

Bei dir fehlen essentielle Schritte, wie das durchsuchen der Directories.

Zumal empfehle ich auf die WindowsApi Funktionen (GetProfileString, etc.) zurückzugreifen, dann kannst du dir das einlesen und parsen der InI Struktur sparen.

Das du eine Lösung vorgiebst ist ja schön und gut.

Aber aus dem ersten Post des TE geht hervor, das er sich nicht sehr gut auskennt.

Was ebenfalls auffällt ist, das der TE keine Zielsprache erwähnt, sprich bevor ich ihm eventuell eine Lösung anbieten würde/könnte, würde ich ersteinmal nachfragen, welche Sprache er bevorzugt nutzt.

Da alles andere zu mehr Verwirrung führen könnte, speziell, da er ja sagt, er sei ein Anfänger.

Das alles führt mich zurück auf meine eigentliche Frage:

Welche Programmiersprache nutzt du denn?

Falls du dir da nicht ganz Sicher bist, stehen folgende zur Auswahl:

-Visual C ++

-C Sharp

-VB Dot NET

-F Sharp

lg

Gateway

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

also erst mal Danke für die ganzen Antworten.

Ich verwende die Sprache C# ( C Sharp )

Werde mir die geposteten Lösungen mal zu gemüte führen.

Wenn jemand weitere Möglichkeiten weiß, immer her damit ;-)

Müssen keine fertigen Lösungen sein. Ich will ja schließlich noch was dabei lernen :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...