Zitat von
Martin K:
Wenn ich die 100.000 Byte direkt von dem Stream in einem String lese, kann ich doch dann auch direkt in diesem String mit Pos() nach 'INFO' suchen, oder wird das "zu groß" für einen String?
Genau hier liegt das Problem, es ist immer sehr schwer eine pauschale Grenze anzugeben. Das kann schon mit der Größe der jeweiligen Caches und der entsprechenden Strategie Deiner CPU variieren, wo die optimale Größe liegt, vom Algorithmus abhängen und natürlich von der Größe des Perfomance-Unterschieds (in den meisten Fällen sind ein paar zig-ms mehr oder weniger egal, woanders zählt jede ns).
Zitat von
Martin K:
Ein anderes Problem was ich noch überhaupt nicht berücksichtigt habe:
Ich gehe einfach davon aus, dass die Datei mit dem INFO Chunk endet und danach nichts mehr kommt.
Was aber wenn danach noch ein anderer Chunk kommt, der nicht zu dem INFO-Teil gehört?
Wie erkenne ich, ob ein anderer Chunk beginnt?
Oder ist das immer so, das der INFO Chunk ganz am Ende der Datei steht (was bei meinen Testdateien immer so war) ?
Das wurde schon angesprochen, Du müsstest Dich hier schlau machen, wie eine WAVE-Datei aufgebaut ist. Hat die z.B. einen Header, der die Größe der Chunks angibt, eine Art TOC oder auch einen Footer, der immer angibt wie groß das vorhergehende Chunk ist? Sowas kannst Du immer der entsprechenden Spezifikation entnehmen. Leichter und sinnvoller ist es aber allemal, dass man hier auf bestehende Komponenten zurückgreift (soweit vorhanden). Da wurde (wenn ich mich recht entsinne) auch schon in diesem Thread auf ein paar hingewiesen, die solltest Du Dir dann einfach mal anschauen.
Gruß