AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Try Except

Ein Thema von Gambit · begonnen am 8. Jun 2003 · letzter Beitrag vom 19. Jun 2003
Antwort Antwort
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

Frage zu Try Except

  Alt 8. Jun 2003, 19:45
Hallo und frohe Pfingsten!

Ich hab hier mal folgenden noch fehlerhaften Code:

Delphi-Quellcode:
procedure TForm1.BtnStoreClick(Sender: TObject);
var JobDone: Boolean;

begin
  JobDone:= false;

  Try
    Query1.Post ;
  except
    on EDatabaseError do
     Messagebox(0, 'Feld Genre darf nicht leer sein!', 'Warnung',16);
  End;

  SetButtons(1);
  activatePostEdit;
end;
Es soll so sein, dass SetButtons(1) und activatePostEdit erst ausgeführt werden, wenn man in das Feld 'Genre' auch wirklich etwas eingegeben hat(und damit die Exception nicht mehr ausgelöst wird).

Wie könnte ich das am besten bewerkstelligen?

Gruß

Gambit

P.S Das Feld Genre ist in der Paradoxtabelle mit 'Eingabe erforderlich' gekennzeichnet
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Frage zu Try Except

  Alt 8. Jun 2003, 19:49
Eine Möglichkeit wäre folgende Änderung:
Code:
procedure TForm1.BtnStoreClick(Sender: TObject);
var JobDone: Boolean;

begin
  JobDone:= false;

  Try
    Query1.Post ;
  except
    on EDatabaseError do
    [color=#f60000]begin[/color]
     Messagebox(0, 'Feld Genre darf nicht leer sein!', 'Warnung',16);
     [color=#f60000]Abort;
    end;[/color]
  End;

  SetButtons(1);
  activatePostEdit;
end;
Abort löst eine "stille" Exception aus, so daß keine weitere Fehlermeldung angezeigt wird, verhält sich ansonsten aber wie eine normale Exception -> Abbruch der Codefolge.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3
  Alt 8. Jun 2003, 19:50
Hallo Gambit,

am besten mit einer repeat until Schleife.

Delphi-Quellcode:
 
fertig := false;
repeat
  Try
    Query1.Post ;
    fertig := true;
  except
    on EDatabaseError do
     Messagebox(0, 'Feld Genre darf nicht leer sein!', 'Warnung',16);
  End;
until fertig;
Aber Achtung, diese Schleife wird nur durch ein erfolreiches "Post" verlassen. Willst du das wirklich?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 8. Jun 2003, 19:54
Zitat von MrSpock:
Aber Achtung, diese Schleife wird nur durch ein erfolreiches "Post" verlassen. Willst du das wirklich?
Ich hoffe doch nicht

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 8. Jun 2003, 20:01
Im Prinzip glaub ich schon. ich versteh das doch richtig, dass die Exception eintritt, wenn nicht erfolgreich "gepostet" werden kann. Es muss aber so sein, dass ich noch die Möglichkeit erhalte, etwas fürs Genre einzutragen. Ich probier das jetzt mal aus.

Danke erstmal

Gambit
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#6
  Alt 8. Jun 2003, 20:08
Ne, so gehts doch nicht. So hab ich praktisch einen Endlos Loop, weil ich nicht die Gelegenheit erhalte, bei Genre etwas einzutragen. Die Exception wird ja ausgelöst, wenn bei Genre nichts eingetragen wird, weils in der Tabelle so markiert ist.

Gruß

Gambit

Nachtrag: Die Version mit dem Abort scheint gut zu funzen!!
  Mit Zitat antworten Zitat
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#7
  Alt 19. Jun 2003, 22:22
ich würde halt die beiden aufrufe

SetButtons(1);
activatePostEdit;

direkt unter das Query.post setzen, also innerhalb von try..except.
Wenn das Post fehlschlägt, tritt der except fall ein und es wird nichts mehr versucht (try). Wenns funktioniert dann werden die beiden methoden halt auch noch ausgeführt.

Klar, das geht auch mit dem abort, allerdings finde ich das so schicker..

Gruß
Ken
  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 14:00 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