Zitat von
DGL-luke:
öhm... versuchs mal ohen dereferenzierung, delphi macht das implizit. und dann zeig mal deine definition von TMod oder was auch immer für ein strcut das ist wo du zugreifst. sind die indices, die du da benutzt, alle ganzzahlig?
Weiss nicht was du mit dereferenzierung meinst aber das ist mal die Type
Delphi-Quellcode:
TWinAMPVisModule = record
Description : PChar;
hWNDParent : HWND;
hDLLInstance : HINST;
sRate : Integer;
nCh : Integer;
LatencyMs : Integer;
DelayMs : Integer;
SpectrumNch : Integer;
WaveformNch : Integer;
SpectrumData : array[0..1,0..575] of byte;
WaveformData : array[0..1,0..575] of byte;
Config : procedure(This_Mod: PWinAMPVisModule); cdecl;
Init : function(This_Mod: PWinAMPVisModule): Integer; cdecl;
Render : function(This_Mod: PWinAMPVisModule): Integer; cdecl;
Quit : procedure(This_Mod: PWinAMPVisModule); cdecl;
UserData : Pointer;
end;
meinst du das h := h + mit dereferenzierung ?
hier ist die ganze schleife.
Delphi-Quellcode:
// Spektrum Analyser Daten glaetten
for c := 0 to 1 do
begin
for i := 0 to 72 do
begin
h := 0.0;
for j := 0 to 8 do
h := h + This_Mod^.Spectrumdata[i * 8 + j + c * 576];
h := h / (1.0 * 255.0);
h := Ln(h + 1.0)* 10.0;
delta :=(ElapsedTime-LastTime)* 10.0;
delta2 :=(ElapsedTime-LastTime)* 2.0;
if (h > heights[c][i] - delta) then
h:= heights[c][i]
else
heights[c][i] := heights[c][i] - delta;
if (h > heights2[c][i] - delta2) then
begin
h := heights2[c][i]
end else heights2[c][i] := heights2[c][i]-delta2;
end;
end;
Edit:
Die Var's
Delphi-Quellcode:
Var
i,j,c : integer;
h,delta,delta2 : single;
x1,x2,z1,z2,y : GLfloat;
d1 : GLfloat;
d2 : GLfloat;
overdraw : GLfloat;
h2,h3,d12d : GLfloat;
hd : GLfloat;
gruss Emil