none
Array-Größe zur Laufzeit - neue Frage unten ... RRS feed

  • Frage

  • Ich will eine Binär-Datei in die Variable in_dat lesen - Zeile 9 ergibt aber den Fehler:

    "eine implizierte Konvertierung vom Typ "string" in "System.Text.StringBuilder" ist nicht möglich."

    wie wäre es richtig - und: - geht es damit überhaupt *.mp3-Dateien zu bearbeiten?

     

    private void button1_Click(object sender, EventArgs e)
     {
      StringBuilder in_dat = new StringBuilder();
    
      OpenFileDialog ofd = new OpenFileDialog();
      ofd.Filter = "Alle Dateien (*.*)|*.*";
      if (ofd.ShowDialog() == DialogResult.OK)
      {
      in_dat = ofd.FileName;
      }
    
    
     }

     

    • Bearbeitet Gast-110 Samstag, 18. Dezember 2010 20:58
    Samstag, 18. Dezember 2010 12:01

Antworten

  • Zum Lesen des Dateiinhaltes in ein Byte-Array kannst Du folgende Methode verwenden:

    byte[] in_dat = System.IO.File.ReadAllBytes(ofd.FileName);

    Die StringBuilder-Klasse ist (wie der Name schon sagt) zum Generieren von Strings gedacht.


    Andreas Miceli - Author of the Advanced Admin Console AddIn
    Samstag, 18. Dezember 2010 13:17
  • Hallo,

    Die FileName Eigenschaft der Datei-Dialoge ist vom Typ String.
    Und weist dort oben nur den Namen zu.

    Willst Du MP3 IDTags und Co bearbeiten solltest Du dafür auf
    eine Bibliothek zurückgreifen, z. B.: http://id3tag.codeplex.com/
    oder auch: http://sourceforge.net/projects/csid3lib/

    Dort gibt es auch Quellcode, womit Du das eine oder andere lernen kannst.

    Gruß Elmar

    Samstag, 18. Dezember 2010 13:28
  • Hallo,

    naja, jeder will mehr ;-)

    Nein, Arrays werden nicht vergrössert, dafür musst Du selbst sorgen,
    siehe u. a. Arrays (C#-Programmierhandbuch)
    Im allgemeinen nimmt man für variable Strukturen Auflistungen .

    Da aber eine MP3 Datei auch mal größer werden kann,
    sollte man sie nicht in einem Rutsch einlesen, sondern je nach
    Aufgabenstellung einen spezialisierten Stream entwerfen.

    Wozu es widerum hilfreich ist, die Grundlagen zut beherrschen,
    denn da scheint es noch ein wenig zu hakeln...

    Ich empfehle Dir, einen Blick den Sourcecode der genannten Bibliotheken
    zu werfen, denn die zeigen auch wie man ein "Mehr" implementiert.

    Gruß Elmar

    Samstag, 18. Dezember 2010 22:15

Alle Antworten

  • Zum Lesen des Dateiinhaltes in ein Byte-Array kannst Du folgende Methode verwenden:

    byte[] in_dat = System.IO.File.ReadAllBytes(ofd.FileName);

    Die StringBuilder-Klasse ist (wie der Name schon sagt) zum Generieren von Strings gedacht.


    Andreas Miceli - Author of the Advanced Admin Console AddIn
    Samstag, 18. Dezember 2010 13:17
  • Hallo,

    Die FileName Eigenschaft der Datei-Dialoge ist vom Typ String.
    Und weist dort oben nur den Namen zu.

    Willst Du MP3 IDTags und Co bearbeiten solltest Du dafür auf
    eine Bibliothek zurückgreifen, z. B.: http://id3tag.codeplex.com/
    oder auch: http://sourceforge.net/projects/csid3lib/

    Dort gibt es auch Quellcode, womit Du das eine oder andere lernen kannst.

    Gruß Elmar

    Samstag, 18. Dezember 2010 13:28
  • @ Elmar Boye:

    ich will nicht nur den Tag einlesen sondern eigentlich, nun, mehr ... ->

    daher will ich selbst wahlfreien Zugriff auf die Bytes haben. ->

    "Die FileName Eigenschaft der Datei-Dialoge ist vom Typ String. Und weist dort oben nur den Namen zu."

    -> Ja, den Dateinamen, wie man das beim String machen würde ... - was fehlt noch?

     

    @ Andreas Miceli:

    werde mich dafür entscheiden, das so in ein Array zu lesen. Ich denke das ist für mich am verständlichsten,

    danke euch beiden.

    Samstag, 18. Dezember 2010 15:41
  • Noch 'ne Frage dazu: - wird das Array eigentlich automatisch vergrößert, wenn es kleiner initialisiert wurde?
    Samstag, 18. Dezember 2010 20:56
  • Hallo,

    naja, jeder will mehr ;-)

    Nein, Arrays werden nicht vergrössert, dafür musst Du selbst sorgen,
    siehe u. a. Arrays (C#-Programmierhandbuch)
    Im allgemeinen nimmt man für variable Strukturen Auflistungen .

    Da aber eine MP3 Datei auch mal größer werden kann,
    sollte man sie nicht in einem Rutsch einlesen, sondern je nach
    Aufgabenstellung einen spezialisierten Stream entwerfen.

    Wozu es widerum hilfreich ist, die Grundlagen zut beherrschen,
    denn da scheint es noch ein wenig zu hakeln...

    Ich empfehle Dir, einen Blick den Sourcecode der genannten Bibliotheken
    zu werfen, denn die zeigen auch wie man ein "Mehr" implementiert.

    Gruß Elmar

    Samstag, 18. Dezember 2010 22:15