Wie gesagt ich bin beim Debuggen meines Progis und mich nervt so ne dumme 'Zugriffsverletzung bei Adresse 004034D3 ... Lesen von Adresse 0000BCF5'. Der Debugger stoppt hier:
Delphi-Quellcode:
program KunstmitdreiEcken;
uses
Forms,
Hauptanwendung in 'Hauptanwendung.pas' {Form1},
Komponenten in 'Komponenten.pas';
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end. //<-- hier stoppt der Debugger
Der Fehler liegt aber natürlich ungefähr 300 Zeilen weiter und in ner anderen
Unit ^^:
Ich hab den Fehler lokalisiert und es liegt höchstwahrscheinlich an dieser Prozedur, jedenfalls wird bei der zeilenweisen Ausführung immer da die Fehlermeldung ausgegeben:
Delphi-Quellcode:
procedure TForm1.Auswahl1;
var a,b,c,d:integer; //Zählvariablen
Dreieck: TDreieck; //Prüfvariable
moeglich:boolean; //Prüfvariable
begin
moeglich:=true; //Anfangsdeklaration
Dreieck:=Dreieck.Create;
for a:=0 to Length(Punkte)-3 do // <-- ab hier kommt dann der Fehler
begin
for b:=a+1 to Length(Punkte)-2 do
begin
for c:=b+1 to Length(Punkte)-1 do
begin
Dreieck.a:=Punkte[a];
Dreieck.b:=Punkte[b];
Dreieck.c:=Punkte[c];
for d:=a+1 to c-1 do
begin
if (Punkte[d].Y<Dreieck.mab*Punkte[d].X+Dreieck.nab) and (Punkte[d].Y<Dreieck.mac*Punkte[d].X+Dreieck.nac)
and(Punkte[d].Y>Dreieck.mcb*Punkte[d].X+Dreieck.ncb) and (d<>a) and (d<>b) and (d<>c) //Punkt im Dreieck und nicht ein Punkt vom Dreieck
then
begin
moeglich:=false; //nicht möglich
Break; //Schleife abbrechen
end;
end;
if moeglich=true
then
begin
SetLength(moglDE, Length(moglDE)+1); //1 neues Element hinzufügen
moglDE[Length(moglDE)-1]:=moglDE[Length(moglDE)-1].Create;
moglDE[Length(moglDE)-1]:=Dreieck; //Dreieck hinzufügen
end
end;
end;
end;
end;
Dazu ma ne kurze Erläuterung zur Klasse Dreieck:
Deklaration:
Delphi-Quellcode:
TDreieck = class
public
a:TPoint;
b:TPoint;
c:TPoint;
function GetFA:real;
function Getmab:real;
function Getmac:real;
function Getmcb:real;
function Getnab:real;
function Getnac:real;
function Getncb:real;
property FA:real read GetFA;
property mab:real read Getmab;
property mac:real read Getmac;
property mcb:real read Getmcb;
property nab:real read Getnab;
property nac:real read Getnac;
property ncb:real read Getncb;
end;
mab, ... ist der Anstieg der Geradengleichung für die Gerade, wovon AB, ... eine Teilmenge ist
nab, ... ist der Versatz für Geradengleichung für die Gerade, wovon AB, ... eine Teilmenge ist
--> Geradengleichung in der Form f(x)=m*x+n
Ich habe keine Ahnung was der Debugger zu mäkeln hat, aber das Ergebniss gefällt mir ganz und gar nicht, denn ich habe keine Ausgabe und die Prozedur wird einfach abgebrochen.