![]() |
Delphi-Version: 5
EInvalidPointer bei rekursiver Funktion
Ich schreibe ein Programm, um Bezier-Kurven beliebeigen Grades darzustellen, erhalte aber immer den Fehler 'Ungültige Zeigeroperation'. Ich hab schon im Forum gesucht, und vermute, dass es mit den Arrays zu tun hat. Kann mir jemand helfen?
Code:
function TForm1.bezier(Punkte:array of real;t:real):real;
var Punkte1,Punkte2:array of real; i:integer; a,b,c:real; begin if length(Punkte)=1 then begin c:=Punkte[0]; end else begin setlength(Punkte1,length(Punkte)-1); setlength(Punkte2,length(Punkte)-1); for i:=0 to length(Punkte)-1 do begin Punkte1[i]:=Punkte[i]; Punkte2[i]:=Punkte[i+1]; end; a:=bezier(Punkte1,t); b:=bezier(Punkte2,t); c:=(1-t)*a+t*b; end; result:=c; end; |
AW: EInvalidPointer bei rekursiver Funktion
Schalt mal die Bereichsprüfung ein.
Zitat:
P.S.: Sry. Willkommen in der DP :dp: |
AW: EInvalidPointer bei rekursiver Funktion
Delphi-Quellcode:
ist kein dynamisches Array! Definiere und verwende einen eigenen Typ:
Punkte:array of real;
Delphi-Quellcode:
type
TMyArray = array of real; |
AW: EInvalidPointer bei rekursiver Funktion
Oh Gott, ich bin dumm. Das mit dem Zählen ab 0 ist schon schwer.. (mit for i=0 to length(Punkte)-2 hat es sofort funktioniert)
Danke Detlef!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 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