Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: sporadisch auftretende Nil-Pointer

  Alt 22. Okt 2005, 19:37
ja, das war exakt das problem. allerdings in einer dimension, in die ich nicht gleich geschaut hab . habs jetzt rausgekriegt.

So alloziiere ich mein array:
Delphi-Quellcode:
procedure TPlotter.AddData(data: array of single);
var i,newlength:integer;
    max:single;
begin
//memory management
if length(fdata) <= fOccupied then
 begin
   newlength:=round(length(fdata)*1.72)+1;
   setlength(fdata,newlength);
 end;
//value assignment
fOccupied:=fOccupied+1;
setlength(fData[fOccupied-1],IfThen((fOccupied - 1 = 0),length(data),length(fdata[0])));
for i := 0 to high(fData[fOccupied-1]) do
 begin
   fData[fOccupied-1,i]:=data[i];
   fMaxValue:=math.max(fMaxValue,data[i]);
 end;
end;
Ich vergrößere mein array also immer um 172% und in der zweiten dimension wird es erst alloziiert, wenn ein wert zugewiesen wird.

und in meiner glorreichen Intelligenz hab ich natürlich beim überprüfen der array-grenzen mist gebaut(ein ausschnitt aus der funktion, die im ersten post gepostet ist):

Delphi-Quellcode:
//param checking
range[0]:=Max(low(fData),range[0]);
range[1]:=Min(high(fData),range[1]);
das high(fData) muss natürlich fOccupied-1 heissen.

Vielen Dank für ihre geschätzte Aufmerksamkeit.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat