AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge exe Datei verhält sich anders als in der IDE-Umgebung
Thema durchsuchen
Ansicht
Themen-Optionen

exe Datei verhält sich anders als in der IDE-Umgebung

Ein Thema von Eisenmann · begonnen am 29. Nov 2021 · letzter Beitrag vom 30. Nov 2021
Antwort Antwort
Eisenmann

Registriert seit: 24. Dez 2016
Ort: Saarland, 66663 Merzig
7 Beiträge
 
Delphi 10.4 Sydney
 
#1

exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 29. Nov 2021, 12:14
Hallo Delphi-Praxis-Team,

mein Programm stürzt ab, wenn ich die exeDatei benutze.
Aber in der IDE-Umgebung läuft das Programm ohne Probleme. Ich habe mit Hilfe einer Showmessage Anweisung die Stelle herausgefunden, an der das Programm abstürzt.
Jetzt läuft die ausführbare Datei mit dem "Stop", also einer Showmessage Anweisung durch, aber halt mit einer ungewollten Meldung als Showmessage Anweisung. Folgend der Quellecode an der besagten Stelle:
Code:
Function TFormStart.LoescheObjektListe(ohneWarnmeldung:Boolean):Boolean;
Var geloescht,weiter:Boolean;
begin
  geloescht:=False;
  if ohneWarnmeldung then begin
    weiter:=True;
  end else begin
    if Objekte.Count>0 then begin
      if messageDLG('wollen Sie die vorhandenen "'+inttostr(Objekte.Count)+'" Objekte überschreiben',mtConfirmation,[mbYes,mbNo],0) = mrno then weiter:=False;
    end;
  end;
  if weiter then begin
    while Objekte.Count>0 do begin
      OB:=Objekte[0];
      OB.loeschen;
      Objekte.Delete(0);
    end;
    Objekte.Clear;
    geloescht:=True;
  end;
  Result:=weiter;
  //showmessage ('Result= '+boolToStr(Result)+' weiter '+BoolToStr(weiter));
  end;
Es ist natürlich eigentlich nicht möglich, auf diese Art einen Fehler zu erkennen. Aber vielleicht weis jemand, wo ich meine Aufmerksamkeit hin lenken muss, da ich so nicht weiter weis.
Also, Klammere ich am Schluss der Funktion dass showmessage aus, stürzt es an der Stelle ab. Mit der Unterbrechung durch eine Meldung, läuft das Programm nach der Meldung problemlos durch.
Die Funktion wird nach dem laden einer Filestream-Datei aufgerufen.

Danke einfach schon mal, für das Durchlesen.

Grüße aus dem Saarland,
der Eisenmann
  Mit Zitat antworten Zitat
Achim Kalwa

Registriert seit: 2. Apr 2005
Ort: Lienen
111 Beiträge
 
Delphi 12 Athens
 
#2

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 10:33
Hallo Eisenmann,
mein Programm stürzt ab, wenn ich die exeDatei benutze.
Aber in der IDE-Umgebung läuft das Programm ohne Probleme.
Ohne jetzt den Code in die IDE geladen zu haben:
Wenn der Parameter "ohneWarnmeldung" = false ist, und die Liste(?) "Objekte" leer ist (Count=0), dann ist der Wert der Variable "weiter" nicht definiert. Setze hinter "geloescht = False;" noch ein "weiter := False;".
Gibt der Compiler bei der Zuweisung zu "Result" keine Warnung aus?

Nachtrag:
Bei mir meldet der Compiler zwei Hinweise und eine Warnung:
H2077 Value assigned to 'geloescht' never used.
H2077 Value assigned to 'geloescht' never used.
W1036 Variable 'weiter' might not have been initialized
Achim

Geändert von Achim Kalwa (30. Nov 2021 um 10:46 Uhr) Grund: Compiler-Meldungen ergänzt
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#3

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 10:49
Hallo Eisenmann,
stürzt auch die im Debug-Modus kompilierte Exe ab?
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.368 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 12:33
if messageDLG('wollen Sie die vorhandenen "'+inttostr(Objekte.Count)+'" Objekte überschreiben',mtConfirmation,[mbYes,mbNo],0) = mrno then weiter:=False; Hier muss noch der Fall abgefangen werden, wenn kein Button, sondern das Kreuz zum Schließen verwendet wird.

OB:=Objekte[0]; Ist OB eine globale Variable? Würde ich an dieser Stelle auf keinen Fall machen. Wer weiß, was dann an anderer Stelle im Programm möglicherweise in OB steht.

Es ist nicht sichergestellt, dass Objekte überhaupt einen Wert hat. Ich würde mindestens eine Prüfung mit assigned erwarten.

Die kritischen Stellen sind ohne try..except/finally.
Du schreibst auch nicht, mit welcher Meldung das Programm abstürzt. Mit einem Exception-Handling könntest du vermutlich noch mehr Infos bekommen.

Das Löschen der Objekte wirkt auch etwas merkwürdig. Vom Objekte.Clear würde ich erwarten, dass es sich um die Freigabe der Objektliste kümmert. Läuft hier vielleicht irgendwas doppelt und der Absturz resultiert aus der Doppelbehandlung?
Peter
  Mit Zitat antworten Zitat
Eisenmann

Registriert seit: 24. Dez 2016
Ort: Saarland, 66663 Merzig
7 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 13:21
Hallo,

erst mal vielen Dank für die schnellen Antworten.
Jetzt kann ich da mal einiges ausprobieren und melde mich dann wieder.

Grüße aus dem Saarland,
der Eisenmann
  Mit Zitat antworten Zitat
JWBokx

Registriert seit: 8. Jul 2021
2 Beiträge
 
#6

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 13:56
Etwa lange her Deutsch zu schreiben....

Code:
    while Objekte.Count>0 do begin
      OB:=Objekte[0];
      OB.loeschen;
      Objekte.Delete(0);
    end;
Welche classtype ist Objecte?
Der liste loeschen mach ich immer vom (count-1) bis 0.
Der Delete muss dan nicht jeder mal indexen scheiben...
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:39 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