Mit gefrickel meine ich das wenn ich die Bereichsprüfung für Bass extra ausschalten muss.
Es hatte nichts mit deiner Person zu tun.
oder den Byte Werten an sich.
Zitat:
Ich habe in diesem Thread noch keinen Code gesehen, der einen solchen Fehler im Compiler auslöst.
Dieser hier!
Einfaches Beispiel.
Mit Bereichsprüfung wirft diese Funktion einen ERangeError.
Nicht bei normaler Behandlung aber wenn ich die Samples pushe über einen Equalizer.
function BASS_ChannelGetData(handle: DWORD; buffer: Pointer; length: DWORD): DWORD;
Delphi-Quellcode:
function BassDataAvailable: BOOL;
var
BytesValid: DWORD;
begin
result := TRUE;
BytesValid := BASS_ChannelGetData(gnAudioChannel, nil, BASS_DATA_AVAILABLE); //<< ERangeError
if BytesValid = DW_ERROR then
result := FALSE;
end;
Wie du siehst ist das ne simple Sache destotrotz werden Fehler geworfen..
Ich kann die Samples natürlich einzeln analysieren und anschließend BytesValid den Wert übergeben.
Nur wo steckt der Sinn dahinter.
Und dieser hier!
Delphi-Quellcode:
for C := 1 to 2 do
Inc(pInteger[C]); // WaveData von TWaveData über BASS_ChannelGetData
Ich muss hier die Samples separat vorher Analysieren um den Fehler zu beheben.
Delphi-Quellcode:
for C := 1 to 2 do
begin
IntI := pInteger[C];
if (IntI > 32767) then
IntI := 32767
else
if (IntI < -32768) then
IntI := -32768;
pInteger[C] := IntI;
end;
gruss