Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: EAccessViolation wegen dyn. Arrays

  Alt 28. Jan 2007, 13:21
Hallo,

bei TWaveChunk.content handelt es sich auch um ein dynamisches Array, der Record enthält also nur einen Zeiger auf den eigentlichen String. Mit der Read-Methode von TFileStream versuchst du nun, die Zeichen in diesen Zeiger einzuladen - das muß scheitern. Versuche es einmal so:

Delphi-Quellcode:
procedure TWaveParser.ReadChunks(); //Chunks auslesen und in das Array "AttachedChunks" schreiben
var
  Chunk : ^TWaveChunk;
begin
  SetLength (AttachedChunks, 0);
  while (FileStream.Position < WavFile.Size) do
    begin
      SetLength (AttachedChunks, Length(AttachedChunks) + 1);
      Chunk := @AttachedChunks[High(AttachedChunks)];
      FileStream.Read(Chunk.chunkname, 4);
      FileStream.Read(Chunk.length, 4);
      SetLength (Chunk.content, Chunk.length);
      if (Chunk.length > 0) then
        FileStream.Read(Chunk.content[0], Chunk.length);
    end;
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat