Letztlich wundert es mich halt, weshalb dieser Fehler nur auftritt, wenn in der 2 Form ein MainMenu vorhanden ist.
Unit, in welcher der Array vorhanden ist:
Delphi-Quellcode:
zahlen : array of Double;
...
function einlesenZahlen(listBox : TListBox) : Boolean;
var
i: Integer;
begin
if listBox.Items.Count >= 4 then begin
SetLength(zahlen, listBox.Items.Count);
for i:= 0 to listBox.Items.Count-1 do zahlen[i] := StrToFloat(listBox.Items[i]);
sortiereZahlen;
Result := True;
end
else begin
ShowMessage('Bitte mindestens 4 Zahlen eingeben!');
Result := False;
end;
end;
...
procedure zeichnen(Form:TForm; Label1,Label2,Label3,Label4,Label5:TLabel);
var
eineLaengenEinheit : Double;
getHeight : array[0..10] of integer;
xWert : integer;
index : integer;
begin
eineLaengenEinheit := (Form.Width-120) / (zahlen[Length(zahlen)-1] - zahlen[0]); //Hier wird mir der Fehler angezeigt
...
end;
Form1 (wo eine der Funktionen genutzt wird):
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
if einlesenZahlen(ListBox1) then begin
Form2.Show;
end;
end;
Form2:
Delphi-Quellcode:
procedure TForm2.FormPaint(Sender: TObject);
begin
zeichnen(Form2, Label1, Label2, Label3, Label4, Label5);
Canvas.Refresh;
end;
procedure TForm2.FormResize(Sender: TObject);
begin
Button1.Left := Round(ClientWidth * 0.0482954545454545);
Button1.Top := Round(ClientHeight * 0.8140589569160998);
Button1.Width := Round(ClientWidth * 0.9034090909090909);
Canvas.Brush.Color := clMenu;
Canvas.FillRect(Rect(0,0, Width, Height));
zeichnen(Form2, Label1, Label2, Label3, Label4, Label5);
end;
Ehrlich gesagt, finde ich hier gerade keinen Fehler und der Fehler tritt ja nur beim schließen des Programms auf (ohne das Form2 aufgerufen wurde), des weiteren ja auch nur, wenn das Menu da ist.
Langsam bin ich echt ratlos