Laden...

Forenbeiträge von Epanias Ingesamt 6 Beiträge

05.05.2014 - 22:13 Uhr

Oh das hatte ich vergessen zu erwähnen: Die - habe ich entfernt. Daran liegt es also nicht. Ich versuch es morgen weiter, vielleicht klappt es ja wenn ich es mal damit probiere, beide nochmal auf das gleiche Encoding zu setzen oder irgendwie sowas.

BTW: Cultures? Tut mir leid, aber wie vorhin schon erwähnt bin ich mit den genauen Bezeichnungen etwas hinten dran im Wissen. Was genau meinst du damit?

05.05.2014 - 21:10 Uhr

*Mit Kopf gegen die Wand hau* Das mit den Fragezeichen wusste ich nicht, das sind die Wissenslücken die man hat, wenn man nie richtig programmieren gelernt hat sondern es sich mit Hilfe von Büchern und Tutorials selbst bei bringt, tut mir leid.

Jetzt meckert zwar der Compiler nicht mehr, aber sobald ich die Funktion ausführe für nur eine Position, hängt sich das komplette Programm auf und macht auf unbestimmte Zeit nichts mehr. Was danach passiert weiß ich nicht, da es sich immer noch nicht rührt.

Ich nutze jetzt diesen Code:


            Int32? CurrentPosition = 0;
                CurrentPosition = Enumerable.Range(0, filecontent.Length - 1).Cast<Int32?>().FirstOrDefault(b => filecontent.Skip(b.Value).Take(content.Length).SequenceEqual(content));

Irgendwelche Ideen?

05.05.2014 - 20:46 Uhr

Danke Abt, für deine Antwort.

Jedoch bekomme ich jetzt diese Fehlermeldung:

Fehlermeldung:
Fehler 1 "int" enthält keine Definition für "Value", und es konnte keine Erweiterungsmethode "Value" gefunden werden, die ein erstes Argument vom Typ "int" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)

bei folgendem Code:


            Int32 CurrentPosition = 0;
                CurrentPosition = Enumerable.Range(0, filecontent.Length - 1).Cast<int>().FirstOrDefault(b => filecontent.Skip(b.Value).Take(content.Length).SequenceEqual(content));

wobei der Teil b.Value markiert wird.

System.Linq ist eingebunden.

05.05.2014 - 20:05 Uhr

Hallo,

Ich habe eine Binärdatei über folgenden Code in mein Programm eingelesen und in einem hexadezimalen String abgelegt:


//Datei auslesen
            byte[] filecontent = System.IO.File.ReadAllBytes(Filename);

//Datei als hexadezimal in String ablegen
            string filecontent_hex = BitConverter.ToString(filecontent);


Und anschließend versucht mit der IndexOf Methode die Adresse im hexadeimalen String von einem String zu finden, den ich von ASCII zu Hexadezimal mit der folgenden Methode konvertiert habe:


                string content = "Suchbegriff";
                content = ASCIITOHex(content);

       public string ASCIITOHex(string ascii)
        {

            StringBuilder sb = new StringBuilder();

            byte[] inputBytes = Encoding.UTF8.GetBytes(ascii);

            foreach (byte b in inputBytes)
            {

                sb.Append(string.Format("{0:x2}", b));

            }

            return sb.ToString();

        }

Soweit funktioniert das auch noch ganz gut, nur bei folgendem Code bekomme ich beim suchen des konvertierten Strings in dem String, der die Binärdateidaten enthält immer -1 als Position raus:


            int CurrentPosition = 0;
            CurrentPosition = filecontent_hex.IndexOf(content);

Da ich über einen Hex-Editor die Adresse in der Datei überprüfen kann, habe ich mir mal einen Substring von genau der Stelle, die mein Programm finden soll anzeigen lassen, die aber im String, der die Binärdaten enthält, genau da ist wo sie sein sollte. Nur die IndexOf Methode findet die Stelle nicht.

Habe ich etwas übersehen, oder ist das ein bekanntes Problem? Und wenn ja, welche anderen Methoden gibt es, um die Position eines Suchbegriffs in einer Binärdatei zu finden?

Danke schon mal im Voraus 😃

30.06.2013 - 22:57 Uhr

Aah danke, damit funktioniert es 😃
Allerdings hast du bei der Zeile:


 string ordnername = vollerPfad.Substring(vollerPfad.LastIndexOf("/") + 1);

das / mit einem \ verwechselt 😉

Ich hatte es vorher mit einer ähnlichen Methode des Substrings und auch des lastindexes versucht, allerdings eine aus dem Buch mit Integern, die dann in einer Fehlermeldung gescheitert ist.
Gut zu wissen wie man beides zusammen kombiniert richtig einsetzt 😄
Allerdings komme ich nicht hinter den Sinn des +1 am Ende der Substringbefehlszeile. Könntest Du mir bitte den Nutzen dazu erklären?

30.06.2013 - 22:08 Uhr

Hallo Community,

Gleich mal im Voraus: Ich bin noch ein ziemlicher Anfänger was C# angeht, habe bis jetzt nur ein bisschen C
unter DOS programmiert und mir jetzt mal das Buch "Einstieg in Visual C# 2012" von Thomas Theis zugelegt und größtenteils durch.
Ich möchte jetzt auch mein erstes größeres Projekt in Angriff nehmen und ein spezielles Editionstool erstellen.
Nach dem Starten des Tools soll der User aus einer Liste von Ordnernamen (die einem speziellen vorher spezifizierten Ordnerpfad entstammen), deren Pfade nicht in dieser Liste angezeigt werden sollen, einen Ordnernamen auswählen, mit dessen Inhalt danach gearbeitet wird.
Bis jetzt habe ich es geschafft eine Liste zu erstellen, in der die Ordnernamen der Ordner innerhalb des vorher spezifizierten Ordnerpfades angezeigt werden, jedoch mit ihrem vorausgehenden Pfad:
<Bild siehe Anhang>
mit folgendem Code:


            string verzeichnis;
            int i;
            string[] dateiliste;
            Directory.SetCurrentDirectory(CharDirectory);
            verzeichnis = Directory.GetCurrentDirectory();
            dateiliste = Directory.GetDirectories(verzeichnis);
            lstCharacterList.Items.Clear();
            for (i = 0; i < verzeichnis.Length; i++)
            {
                lstCharacterList.Items.Add(dateiliste[i]);
            }

Ich habe jetzt gefühlte 100 unterschiedliche Arten versucht, die einzelnen Ordnernamen ohne ihre Pfade anzeigen zu lassen
und jeder Versuch hat mit einer neuen Katastrophe geendet. Ich bin langsam echt am Verzweifeln.
Internet und Sufu haben mir auch nichts nützliches zu meinem Problem beigetragen.
Und selbst wenn doch, haben auch diese Lösungen zu neuen Problemen geführt, mit denen ich mich noch weniger auskenne.

Hat jemand von Euch eine Idee, wie ich dieses Problem lösen könnte? Ich wäre für Abhilfe echt dankbar.