AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Programm stürzt nach mehren Stunden Laufzeit ab.
Thema durchsuchen
Ansicht
Themen-Optionen

Programm stürzt nach mehren Stunden Laufzeit ab.

Ein Thema von gee21 · begonnen am 2. Sep 2021 · letzter Beitrag vom 22. Sep 2021
Antwort Antwort
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Programm stürzt nach mehren Stunden Laufzeit ab.

  Alt 22. Sep 2021, 14:10
Ein ähnliches Problem hatte ich auch mal. Allerdings hat er dann bei dem Versuch irgendwas in der GUI zu machen eine Exception geworfen. Im ersten Beitrag steht ja das die relevante Funktion die als letztes aufgerufen wird in einem try except Block steht. Wenn ich das richtig verstanden habe. Das würde glaube jede Exceptionmeldung natürlich unterdrücken. Die Exe im Debug mode zu kompilieren macht ja auch noch ein Unterschied.

Ich hatte auch alles nach Speicherlecks durchsucht. Aber die Ursache war letztendlich der Speicherort von dem aus das Programm gestartet wurde. Der Fehler ist nur aufgetreten, wenn das Programm aus dem Netzwerk gestartet wurde. Das selbe könnte für Wechseldatenträger gelten.
Ja also ich habe den Speicherort Lokal (c:\) weil ich früher auch schon Probleme bekommen habe als ich es aus dem NetzLaufwerk startete. Und ich habe ebenfalls die .exe Manuell durch doppelklick gestartet da ich auch schon diverse Probleme / unterschiede / verzögerungen im Debug Modus von Delphi hatte.

Ich habe nun einiges abgeändert und zudem die ganze FTP Geschichte in einen eigenen Thread gesetzt. Dieser Thread startet sich am ende von selbst neu und falls er das nicht mehr tut (warum auch immer) so startet ein Timer den Thread manuell neu.

Ich VERMUTEes hing vorher irgendwie damit zusammen das ich die Dateien unbenannt habe und dann schnellstmöglich löschen wollte. Den diese beiden Sachen habe ich nun weggelassen trotz das sie eigentlich im try/except standen... Dateien werden nun nicht mehr unbenannt und werden auch erst bei Programmende gelöscht. Seitdem läuft das Programm nun

Obwohl meine Lösung / Programmierung bestimmt sehr amateurhaft ist, poste ich hier noch der funktionierende Code um dieses Thema hier abschliessen zu können.

VIELEN DANK AN ALLE für eure Hilfe.

http://gee.myasustor.com:8642/mainFinal.pas
Robert
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: Programm stürzt nach mehren Stunden Laufzeit ab.

  Alt 22. Sep 2021, 15:57
Na ja die ganzen Form1 sind immer noch drin.. Warum?
Du befindest dich doch schon innerhalb der Classe Tform1
Lösche den Kram doch einfach.

das
ts.Add(Form1.Edit_Host.Text);
zu
ts.Add(Edit_Host.Text);
usw..
Überprüfe den gesamten Quelltext nochmal

Das tform1 zu TForm1 um eine einheitliche Schreibweise zu erhalten (aber nicht Lebenswichtig nur als Tip nebenbei)
Zumindest macht es den Quelltext lesbarer.

Delphi-Quellcode:
procedure tform1.savesettings;
var
ts: tstringlist;
begin
  ts := tstringlist.Create;
  try
        try
            ts.Add(Form1.Edit_Host.Text);
            ts.Add(Form1.Edit_User.Text);
            ts.Add(Form1.Edit_Password.Text);
            ts.Add(Form1.Edit_Port.Text);
            ts.Add(Form1.Edit_LS.Text);
            ts.Add(Form1.Edit_RE.Text);
            ts.Add(Form1.Edit_ET1.Text);
            ts.Add(Form1.Edit_ET2.Text);
            ts.Add(Form1.Edit_verbindungsDAUER.Text);
            ts.Add(form1.Edit_pause_pro_durchgang.Text);
            ts.Add(Form1.Edit_pause_wiederverbindung.Text);
            ts.Add(Form1.Edit_druck_pauseDEA.Text);
            ts.Add(Form1.Edit_rechnungen_max.Text);
            ts.Add(Form1.Edit_papierfach_max.Text);
            ts.Add('tray:off');
            ts.Add(IfThen(CheckBox_autostart.Checked, 'autostart:on','autostart:off'));
            ts.Add(IfThen(CheckBox_DebugLog.Checked, 'debug:on','debug:off'));
            ts.Add(IfThen(CheckBox_verstecke_cmd.Checked, 'hidecmd:on','hidecmd:off'));
            ts.Add(inttostr(papierfach));
            ts.Add(inttostr(rechnungsfach));
            ts.Add('');
            ts.SaveToFile(programmpfad + 'settings.txt');
        except
            on e: exception do form1.addline('Fehler beim speichern der Einstellungen: ' +e.Message);
        end;
    finally
        ts.free;
    end;
end;

Geändert von venice2 (22. Sep 2021 um 16:15 Uhr)
  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 11:58 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