Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Interbase SQL-Dialect 1/3 - Problem

  Alt 18. Dez 2013, 02:54
Ein paar Anmerkungen zu deinem Code
  • Das hier
    Delphi-Quellcode:
        If DataModule2.IBD.LoginPrompt = TRUE THEN DataModule2.IBD.LoginPrompt := FALSE;
        IF DataModule2.IBD.Connected = TRUE THEN DataModule2.IBD.Connected := FALSE;
    kannst du auch so schreiben
    Delphi-Quellcode:
        DataModule2.IBD.LoginPrompt := FALSE;
        DataModule2.IBD.Connected := FALSE;
  • das hier
    Delphi-Quellcode:
    Screen.Cursor := ...;
    Foo; // Hier kommt eine Exception und der Cursor wird nicht zurückgesetzt!
    try
      Bar;
    finally
      Screen.Cursor := ...;
    end;
    eher so
    Delphi-Quellcode:
    Screen.Cursor := ...;
    try
      Foo; // kann kommen was will, der Cursor wird zurückgesetzt
      Bar;
    finally
      Screen.Cursor := ...;
    end;
  • und hier
    Delphi-Quellcode:
    try
      Foo;
      Bar;
    except
      on E:EDatabaseError do
        begin
          MessageBeep(MB_ICONEXCLAMATION);
          MessageDlg(E.Message, mtError, [mbOk], 0);
        end;
    end;
    machst du das Gleiche, was bei einer normalen (ungefangenen) Exception auch passiert.
    Es wird eine Messagebox mit dem Fehler angezeigt. Allerdings wird bei dir der Code nach except ... end; noch weiter ausgeführt.

    Es passiert hier nur deswegen nichts, weil danach nur noch Zeilen kommen, die auch bei einer Exception ausgeführt werden.

    So behandelt man Exceptions nicht.

    kannst du also auch so vereinfachen (verbessern)
    Delphi-Quellcode:
    Foo;
    Bar;
Zum eigentlichen Thema:

Wenn du uns das Script zeigst, dann können wir evtl. auch die Frage beantworten.

Offene Fragen schließen:

Schreibe eine Antwort und entferne unten den Haken bei "Dieses Thema als offene Frage markieren"
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (18. Dez 2013 um 02:59 Uhr)
  Mit Zitat antworten Zitat