AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GetMem verursacht Fehler

Ein Thema von JanW · begonnen am 24. Jun 2009 · letzter Beitrag vom 27. Jun 2009
 
JanW

Registriert seit: 5. Jun 2009
8 Beiträge
 
Lazarus
 
#5

Re: GetMem verursacht Fehler

  Alt 24. Jun 2009, 07:32
Hab den Wavecode auskommentiert. Das einzige was da sowieso in Frage käme als Fehlerverursacher war "Move" (wenn es denn mein Fehler ist).
Scheint einwandfrei zu funktionieren.

Alte Zeile
Delphi-Quellcode:
      if RPos+16<= waveDataSize then ReadLength:=16;
      if RPos+16> waveDataSize then ReadLength:= (Rpos+16)-waveDataSize;
      
      DateiStream.Read(DataBlock16[0],readlength*2); // Fülle das DatenBlock Array

      Move(DataBlock16[0], waveData16[RPos], length(DataBlock16)*2); // Verschiebe den DatenBlock ins WaveData Array
So scheints zu gehen.
Delphi-Quellcode:
      if RPos+16<= waveDataSize then ReadLength:=16;
      if RPos+16> waveDataSize then ReadLength:= (Rpos+16)-waveDataSize;

      DateiStream.Read(DataBlock16[0],readlength*2); // Fülle das DatenBlock Array
      Move(DataBlock16[0], waveData16[RPos], ReadLength*2); // Verschiebe den DatenBlock ins WaveData Array
Gut, in dem Fall von dem DatenBlock hast du Recht hoika, da reicht ein statisches Array völlig aus. Habs auch umgestellt.
Ich versteh nicht ganz wieso der Fehler auftritt.

Length(DataBlock16) gibt doch die Anzahl der Elemente im Array zurück. Also 16 in meinem Fall.
Am Ende der Datei, beim allerletzen Block, wenn weniger als 16 SmallInts auszulesen sind ists einerseits klar beim alten Code, dass das DataBlock Array nicht ganz gefüllt ist. Logisch.

Nehmen wir an es gäbe noch 7 Einträge zu lesen, dann wäre ja nur 0-7 gefüllt, 8-15 hätte dann noch den Wert vom vorherigen Datenblock, richtig?
Das klingt als Audiostream warscheinlich scheisse (-> knacksen), sollte aber doch keine Zugriffsverletzung verursachen?
Ich lasse mir auch die PCM-Rohdaten anzeigen als Welle, und das funktioniert von Anfang bis Ende einwandfrei. Kein Fehler...

Normalerweise bin ich C# und VB.NET Benutzer, da ging sowas immer einwandfrei.. bin auf FPC weil ich Platformunabhängigkeit will und Delphi eben noch aus dem Informatikunterricht kenn (da haben wir aber nicht mehr als Ampelprogramme gemacht )

Kann mir jemand von euch erklären wieso gerade das dann bei getmem einen Fehler auslöst?

Gruß,
Jan
Jan
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz