AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Fehlermeldung bei zweitem MainMenu

Fehlermeldung bei zweitem MainMenu

Ein Thema von Pytroxis · begonnen am 14. Apr 2019 · letzter Beitrag vom 15. Apr 2019
Antwort Antwort
Seite 1 von 2  1 2   
Pytroxis

Registriert seit: 12. Apr 2019
46 Beiträge
 
#1

Fehlermeldung bei zweitem MainMenu

  Alt 14. Apr 2019, 15:32
Guten Tag,

ich bin momentan ein kleines Programm am schreiben, dieses Programm besitzt 2 Forms.
Ich habe versucht auf beiden ein MainMenu einzufügen, allerdings habe ich folgendes Problem:
Sobald ich auf der 2. Form ein MainMenu einfüge erhalte ich beim schließen des Programmes ein Fehler und zwar, dass eine Zugriffsverletzung stattgefunden hat (-> Es wurde versucht mit dem dynamischen array zu arbeiten, welcher noch keine Werte oder eine Länge besitzt (-> Wird erst gesetzt erstellt beim aufrufen der 2. Form, zum Zeitpunkt des Beendens wurde diese nicht aufgerufen)).
Nun stehe ich natürlich auf dem Schlauch. Weshalb erhalte ich diesen Fehler nur, wenn auf Form 2 ebenfalls ein MainMenu benutzt wird?
Ohne das MainMenu funktioniert alles einwandfrei...
Miniaturansicht angehängter Grafiken
delphi.png  
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Fehlermeldung bei zweitem MainMenu

  Alt 14. Apr 2019, 16:03
Hallo,
sobald du das löschst und nichts anderes, geht es?
Heiko
  Mit Zitat antworten Zitat
Pytroxis

Registriert seit: 12. Apr 2019
46 Beiträge
 
#3

AW: Fehlermeldung bei zweitem MainMenu

  Alt 14. Apr 2019, 17:01
Hallo,
sobald du das löschst und nichts anderes, geht es?
Genau, sobald ich das MainMenu auf Form2 lösche geht alles wieder reibungslos und das Programm versucht nicht mit dem Array zu arbeiten.
(Dieser Fehler tritt schon auf, wenn ich nur das MainMenu hinzufüge aber noch nichts damit mache).

Bin wirklich ratlos, was das sein kann :S
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
670 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fehlermeldung bei zweitem MainMenu

  Alt 15. Apr 2019, 12:34
Guten Tag,

ich bin momentan ein kleines Programm am schreiben, dieses Programm besitzt 2 Forms.
Ich habe versucht auf beiden ein MainMenu einzufügen, allerdings habe ich folgendes Problem:
Sobald ich auf der 2. Form ein MainMenu einfüge erhalte ich beim schließen des Programmes ein Fehler und zwar, dass eine Zugriffsverletzung stattgefunden hat (-> Es wurde versucht mit dem dynamischen array zu arbeiten, welcher noch keine Werte oder eine Länge besitzt (-> Wird erst gesetzt erstellt beim aufrufen der 2. Form, zum Zeitpunkt des Beendens wurde diese nicht aufgerufen)).
Nun stehe ich natürlich auf dem Schlauch. Weshalb erhalte ich diesen Fehler nur, wenn auf Form 2 ebenfalls ein MainMenu benutzt wird?
Ohne das MainMenu funktioniert alles einwandfrei...
Um welche Delphi-Version geht es hier? Werden beide Forms automatisch erzeugt, oder nur das erste (main form)? Der Fehler rührt daher, das Kode versucht, auf ein Objekt, string, oder dynamic array über eine Variable zuzugreifen, die nil ist, der also nie eine Referenz zugewiesen wurde.

Bau deine Anwendung mal mit Debug informationen und Debug DCUs. Laß sie unter dem Debugger laufen, dann solltest Du anhand des Callstacks ermitteln können, woher das Problem kommt.

Was ist eigentlich der Formstyle des zweiten Forms?
Peter Below
  Mit Zitat antworten Zitat
Pytroxis

Registriert seit: 12. Apr 2019
46 Beiträge
 
#5

AW: Fehlermeldung bei zweitem MainMenu

  Alt 15. Apr 2019, 17:28
Um welche Delphi-Version geht es hier? Werden beide Forms automatisch erzeugt, oder nur das erste (main form)? Der Fehler rührt daher, das Kode versucht, auf ein Objekt, string, oder dynamic array über eine Variable zuzugreifen, die nil ist, der also nie eine Referenz zugewiesen wurde.

Bau deine Anwendung mal mit Debug informationen und Debug DCUs. Laß sie unter dem Debugger laufen, dann solltest Du anhand des Callstacks ermitteln können, woher das Problem kommt.

Was ist eigentlich der Formstyle des zweiten Forms?
-Delphi-Version: 10.3
-Beide Forms werden beim Programmstart erzeugt
-Mir ist bewusst, was der Fehler bedeutet, die Variable bzw. der Array besitzt auch solange keinen Wert/keine Länge, solange Form 2 nicht aufgerufen wird.
-> Daran kann der Fehler aber nicht liegen, denn ohne MainMenu schließt sich das Programm ohne Fehler, also muss das MainMenu versuchen irgendwie auf die variable zuzugreifen, obwohl es das nicht sollte/nirgends macht.
--> Demnach liegt es meiner Meinung nach am MainMenu und nicht an meinem Code, denn sonst müsste ja die Meldung immer kommen (oder habe ich einen Denkfehler?).
-Formstyle: fsNormal
-Debug: Im Debugmodus wird mir immer die stelle angezeigt, bei welcher versucht wird auf den Array zuzugreifen, allerdings dürfte bis zu dem Zeitpunkt nicht darauf zugegriffen werden und das Programm versucht auch erst darauf zuzugreifen, wenn das MainMenu vorhanden ist.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#6

AW: Fehlermeldung bei zweitem MainMenu

  Alt 15. Apr 2019, 17:42
Da wir deinen Code nicht sehen können, ist eine Beurteilung allerdings schwierig. Mach doch mal ein kleines Testprogramm, das den Fehler zeigt. Ansonsten können wir auch nur raten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Fehlermeldung bei zweitem MainMenu

  Alt 15. Apr 2019, 17:51
Hallo,
Zitat:
es wurde versucht mit dem dynamischen array zu arbeiten,
Welches dynamische Array?

Ich habe gerade mal ein kleines Bsp.-Programm mit 2 Forms erzeugt -> kein Fehler.
Heiko

Geändert von hoika (15. Apr 2019 um 17:57 Uhr)
  Mit Zitat antworten Zitat
Pytroxis

Registriert seit: 12. Apr 2019
46 Beiträge
 
#8

AW: Fehlermeldung bei zweitem MainMenu

  Alt 15. Apr 2019, 19:05
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#9

AW: Fehlermeldung bei zweitem MainMenu

  Alt 15. Apr 2019, 19:31
Ich wiederhole:

Mach doch mal ein kleines Testprogramm, das den Fehler zeigt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Fehlermeldung bei zweitem MainMenu

  Alt 15. Apr 2019, 19:43
Hallo,
Du benutzt globale Variablen für die arrays, das ist schon mal "doof".

Baue uns ein minmales Beispiel-Programm, was den Fehler erzeugt und kompilierbar ist.

Wo wird das Zahlen-Arrays freigegeben?
Wahrscheinlich noch vor der Freigabe der anderen Forms und dort wird das Zeichnen noch benutzt.

Wenn schon globale Arrays, denn erzeuge sie in der DPR und gibt sie dort auch frei.
-> Oh Gott, habe ich das gesagt??? ;(
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz