Autor Beitrag
blutengel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Mo 01.03.10 19:15 
Hallo!

Ich möchte in meinem Programm eine Intel Hex Datei auslesen, um damit später Eprom´s programmieren zu können. Dazu brauch ich:

Zeichen 2-3 :Datenlänge
Zeichen 4-7 :Adresse
Zeichen 7-8 :Recordtyp
Zeichen 9-41 :Daten



Hiermit öffne ich die Datei und zeige den Inhalt in einer RichTextBox an.
Wie kann ich jetzt die einzelnen Zeichen aus der Date auslesen. Ich habe da mal was gehört das man Zeile und Zeichen angeben kann, um das dann in einer Variablemn zu speichern.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
private void dateiLadenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            DialogResult buttonClicked = openFileDialog1.ShowDialog();

            if (buttonClicked.Equals(DialogResult.OK))
            {
                fileToOpen = openFileDialog1.FileName;
                StreamReader reader = new StreamReader(fileToOpen,  System.Text.Encoding.Default); // Öffnet die Datei zum Lesen
                daten = reader.ReadToEnd();
                reader.Close();
                //daten = System.IO.File.ReadAllText(fileToOpen);
                richTextBox1.Text = daten;
                
            }
        }



MFG

blutengel
c#surfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 42
Erhaltene Danke: 2



BeitragVerfasst: Mo 01.03.10 19:45 
einzelne Zeilen kannst du z.B. mit StreamReader.ReadLine auslesen. Das herausfischen der einzelnen Bestandteile ist einfach mit String.Substring zu realisieren.
blutengel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Mo 01.03.10 19:50 
Danke erstmal für die schnelle Antwort. Aber könntest du mir das vielleicht etwas genauer erklären.Bin noch nicht sehr erfahren mit C#.Vielleicht Anhand eines Codebeispiels oder besser noch anhand meines Codes.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 01.03.10 19:53 
Hallo!

Ich denke, mit Zeichen meinst Du jeweils Bytes, oder? Dann hilft Dir eine RichTextBox erstmal gar nichts, mal ganz davon abgesehen dass ein GUI-Element nicht dazu ist, Daten von einer Datei einzulesen.

Ich würde Dir da den Einsatz eines FileStream empfehlen, mit dem kannst Du sowohl einzelne Bytes (ReadByte) als auch Arrays von Bytes (Read) lesen.

Um aus einzelnen Bytes (wie denen für die Datenlänge) wieder "normale" Werte zu machen, kannst Du den BitConverter einsetzen.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
blutengel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Mo 01.03.10 19:58 
Die RichTextBox dient nur zur Anzeige der Intel - Hex Datei, hat also keinen weiterren Sinn.Die daten stehen ja in der Variablen daten.
Geht das denn so:
Also die letze Zeile?
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
if (buttonClicked.Equals(DialogResult.OK))
            {
                fileToOpen = openFileDialog1.FileName;
                StreamReader reader = new StreamReader(fileToOpen, System.Text.Encoding.Default); // Öffnet die Datei zum Lesen
                daten = reader.ReadToEnd();
                reader.Close();
                //daten = System.IO.File.ReadAllText(fileToOpen);
                richTextBox1.Text = daten;

                MessageBox.Show(daten);

              
                StreamReader sr = new StreamReader(daten);
                
            }
        }
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 01.03.10 20:05 
Was soll die letzte Zeile denn machen? :gruebel:

Häng doch auch bitte mal ne Beispieldatei an, damit man sieht, wie die Datei wirklich aussieht und besser antworten kann.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
blutengel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Mo 01.03.10 20:12 
Ich dachte erst ich muss einen Neuen Streamreader machen, und dort die bereits geladenen Daten schreiben.Aber wie schon gesagt ich bin noch ziemlich neu,und mit Dateien habe ich in C# bis jetzt noch nicht gearbeitet.
ausblenden Quelltext
1:
2:
3:
4:
Intel - Hex Datei
:100000007B077401F5B00379FF78FFD8FED9FADBDE
:03001000F380FE7C
:00000001FF
blutengel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Mo 01.03.10 21:26 
Womit muss ich eigentlich arbeiten. In der Variable daten steht ja die Hex - Datei drin. Kann ich damit überhaupt was anfangen, oder muss ich den Inhalt noch in eine Neue Variable schreiben?
c#surfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 42
Erhaltene Danke: 2



BeitragVerfasst: Di 02.03.10 09:14 
Hallo blutengel,
ich empfehle dir folgende Vorgehensweise:

1. Erstelle eine Konsolenanwndung (eine Windows Anwendung macht die Sache erstmal nicht einfacher und du kannst dich auf das eigentliche Problem konzentrieren)
2. Lies das Intel-HexFile zeilenweise ein. Beim StreamReader gibt es dazu einfache Beispiele (Stichwort: Lesen aus einer Textdatei) in der Hilfe. (@Christian S.: Ich denke dies ist die einfachste Möglichkeit für blutengel und ihm weitere Möglichkeiten aufzuzeigen würde ihn wahrscheinlich eher verwirren).
3. Nun hast du die Datei zeilenweise als String vorliegen. Und kannst ihn mit dem bereits erwähnten String.Substring zerlegen

Wenn du dies Schritt für Schritt machst wirst du erfolgreich sein. Nutze bitte intensiv die MSDN Hilfe und Literatur (z.B. openbook.galileocomputing.de/csharp/). Dort findest du meist auch Beispielcode.

Viel Spaß!