Fehlermeldung obwohl Try

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Geisthd
Beiträge: 4
Registriert: So 25. Sep 2016, 21:38

Fehlermeldung obwohl Try

Beitrag von Geisthd »

HI,

Ich habe da eine kleine Frage. Ich hbe in meinem Code einen Part wo ich mit dateien arbeite. Ich erstelle in dem Part Accounts. Damit nicht alle Daten verloren gehen, versuche ich sie im try block zu lesen und im finnaly teil erweitert ich sie. Leider kommt immernoch die Fehlermeldung nicht lesbar und der Code nach dem finnaly block wird nicht ausgeführt. Kann man mir dabei helfen?


PS ich habe im finnaly block nich eine try schleife.



Bei Fragen bitte melden

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: Fehlermeldung obwohl Try

Beitrag von SoE »

Ich glaube es ist besser ein kleines Testprojekt anzuhängen oder dessen Quellcode zu zeigen, als den Fehler einfach nur zu beschreiben, denn so wird sich wahrscheinlich erstmal jeder fragen "Wieso soll der Code nach FINALLY nicht ausgeführt werden?".
Zumal das für mich nicht ganz eindeutig ist. Wird der Code nach dem FINALLY Block nicht ausgeführt oder der Code im FINALLY Block oder ist das für dich das gleiche?

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: Fehlermeldung obwohl Try

Beitrag von SoE »

Leider kommt immernoch die Fehlermeldung nicht lesbar und der Code nach dem finnaly block wird nicht ausgeführt.

Da klingt ja so als würdest du TRY_EXCEPT_END benutzen und dich wundern, dass innerhalb des Editors trotzdem eine Exception angezeigt wird. Das ist ganz normal, kann aber ausgeschaltet werden. Wenn du nur kurz mal keine sehen möchtest, dann starte das Programm außerhalb des Editors.

EDIT: Das Einfachste ist folgendes: richte dir den DEBUG und RELEASE-Modus ein und lösche den DEFAULT Modus in den Projekteinstellungen und wenn du die Exceptions sehen möchtest, dann stelle den Modus auf DEBUG und wenn nicht, dann stelle den MODUS auf RELEASE. Im RELEASE-Mode wird dann der EXCEPT-Teil abgearbeitet...

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: Fehlermeldung obwohl Try

Beitrag von SoE »

Siehe Bild...
Dateianhänge
RELEASE.png
RELEASE.png (22.68 KiB) 1588 mal betrachtet

Geisthd
Beiträge: 4
Registriert: So 25. Sep 2016, 21:38

Re: Fehlermeldung obwohl Try

Beitrag von Geisthd »

Danke erstmal für die schnellen Antworten! Code Beispiel folgt! Und nein ich habe keine exception schleife verwendet. An alle die denken das ich die Information von lazarus als fehlermeldung ansehe.

Geisthd
Beiträge: 4
Registriert: So 25. Sep 2016, 21:38

Re: Fehlermeldung obwohl Try

Beitrag von Geisthd »

Code: Alles auswählen

 
if (Edit1.Text = '') OR (Edit2.Text = '') OR (Edit3.Text = '') OR (Edit1.Text = 'Benutzername') OR(Edit2.Text = 'Passwort') OR (Edit3.Text = 'Passwort wiederholen') OR not (Edit2.Text = Edit3.Text)then
  begin
    ShowMessage('Bitte komplett ausfüllen und / oder richtig ausfüllen!');
  end else
  begin
    sl:=TStringList.Create;
    general:= TStringList.Create;
    try
      general.LoadFromFile('Daten.txt');
    finally
      try
        general.Add(Edit1.Text);
        general.Add(Edit2.Text);
        general.SaveToFile('Daten.txt');
        sl.Add(Edit1.Text);
        sl.Add('0');
        sl.SaveToFile(Edit1.Text + 'Daten.txt');
      finally
        sl.Free;
        general.Free;
      end;
    end;
 
 
    Edit1.Text:='Benutzername';
    Edit2.Text:='';
    Edit3.Text:='';
    Form2.Hide;
    Form1.Left:=Form2.Left;
    Form1.Top:=Form2.Top;
    Form1.Show;
 
  end;
 

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Fehlermeldung obwohl Try

Beitrag von Michl »

Geisthd hat geschrieben:... der Code nach dem finnaly block wird nicht ausgeführt.

Anhand deines Beispiels könnte sowas passieren (reduziert):

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    raise Exception.Create('First Exception');
  finally
    try
      raise Exception.Create('Second Exception');
    finally
      ShowMessage('Alles gut');
    end;
  end;
end;
Wenn ich das Bsp. ohne Debugger starte, wird "Alles gut" ausgegeben. Bei dir nicht?

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Fehlermeldung obwohl Try

Beitrag von shokwave »

Hi,

Geisthd hat geschrieben:Leider kommt immernoch die Fehlermeldung nicht lesbar

Wie lautet die Meldung genau? Kannst du sagen in welcher Zeile im Code sie auftritt (Breakpoint setzen und mit F8 durchsteppen)? Die Datei, die gelesen/geschrieben werden soll, sollte auch geprüft werden. Kannst du sie mit einem Editor öffnen und stimmt der Inhalt?

Code: Alles auswählen

    try
      general.LoadFromFile('Daten.txt');
    finally
 

An der Stelle kann eine Fehlermeldung auftauchen, wenn die Datei nicht existiert. Um das zu vermeiden, kann/sollte man vorher prüfen ob die Datei überhaupt existiert.

Code: Alles auswählen

    try
      if FileExistsUTF8('Daten.txt') then
        general.LoadFromFile('Daten.txt');
    finally
 
mfg Ingo

Geisthd
Beiträge: 4
Registriert: So 25. Sep 2016, 21:38

Re: Fehlermeldung obwohl Try

Beitrag von Geisthd »

Damit klappt es jetzt :D

Code: Alles auswählen

 
 if (Edit1.Text = '') OR (Edit2.Text = '') OR (Edit3.Text = '') OR (Edit1.Text = 'Benutzername') OR(Edit2.Text = 'Passwort') OR (Edit3.Text = 'Passwort wiederholen') OR not (Edit2.Text = Edit3.Text)then
  begin
    ShowMessage('Bitte komplett ausfüllen und / oder richtig ausfüllen!');
  end else
  begin
    sl:=TStringList.Create;
    general:= TStringList.Create;
    try
      general.LoadFromFile('Daten.txt');
    except
      ShowMessage('Datei angelegt');
    end;
    try
      general.Add(Edit1.Text);
      general.Add(Edit2.Text);
      general.SaveToFile('Daten.txt');
      sl.Add(Edit1.Text);
      sl.Add('-3');
      sl.Add('5');
      sl.Add('-3 Euro     Preis für 5 Buchungen');
      sl.SaveToFile(Edit1.Text + 'Daten.txt');
    finally
      sl.Free;
      general.Free;
    end;
 
    Edit1.Text:='Benutzername';
    Edit2.Text:='';
    Edit3.Text:='';
    Form2.Hide;
    Form1.Left:=Form2.Left;
    Form1.Top:=Form2.Top;
    Form1.Show;
 

Antworten