![]() |
Case... else
Heyho,
hab mal ne Frage zu Case-Bedingungen: Wenn ich einen Dialog mittels Case aufrufe
Delphi-Quellcode:
müsste dann nicht beim Klick auf Cancel der Else-Block ausgeführt werden? Also so, dass else alle Buttons umfasst, die nicht einzeln behandelt werden?
case MessageDlg('Wuppdi',mtError,[mbOk,mbNo,mbCancel],0) of
mrOK : begin ... end; mrNo : begin end; else : begin end; end; Bei mir wird das immer übersprungen... |
Re: Case... else
Stimmt, das else sollte alle Fälle abfangen, die zu keinem case-Label passen.
|
Re: Case... else
Tuts eigentlich auch... Aber das original Statement hat sicherlich noch was zwischen begin...end, oder? Sonst wird das nämlich gnadenlos wegoptimiert... ;)
|
Re: Case... else
Vermutlich ist es das gleiche Problem, das
![]() |
Re: Case... else
Zitat:
|
Re: Case... else
Zeig doch mal den Originalcode.
|
Re: Case... else
Hmmm, seltsam, hab's ausprobiert:
Bei mir funktioniert das genau wie erwartet. ähhhh - allerdings mit einem Unterschied: Nach else kein Doppelpunkt |
Re: Case... else
Moin,
hinter else kommt kein ":". Einfach else begin ... end; Grüße Klaus |
Re: Case... else
Man beachte das mrCancel, was ich gerade mal noch zum Testen hinzugefügt hab...
Delphi-Quellcode:
EDIT:
case TypeCompare(aImpObj, aCurObj) of
2: blDoTblCheck := true; 1: case MessageDlg( message, mtConfirmation, [mbYes,mbNo,mbCancel],0 ) of mrNo: begin aDeleteObj[aImpObjCount]:=1; aActionProtocol.DoAddDBActionEventItem(customEvent); end; mrYes: begin aImpObj.ID:= aCurObj.TypID; blDoTblCheck:= TRUE; end; mrCancel : Exit; //hab ich testhalber mal hinzugefügt, wird auch ignoriert else exit; //wird ignoriert end; else begin aDeleteObj[aImpObjCount]:=1; aActionProtocol.DoAddDBActionEventItem(customEvent); blDoTblCheck:= false; exit; end; beim Klick auf Cancel springt er direkt in das else-Label der äußeren Case-Bedingung und zwar direkt auf exit, ohne die drei Anweisungen davor. EDIT2: Was mir noch aufgefallen ist, was dem Problem aber auch nicht abhilft, ist, dass die IDE(*) das else unterschiedlich einfärbt, je nachdem ob davor ein Semikolon steht oder nicht: mit Semikolon hat es die Farbe der Case-Bedingung und ohne die der begin...end eine Ebene tiefer bei mrYes usw. *hab CN-Pack installiert, das färbt zusammengehörige Statements ein |
Re: Case... else
Passiert nach diesem CASE noch etwas, oder ist da die Prozedur/Funktion zuende?
Wenn danach nichts mehr passiert, dann wird das Exit vermutlich auch wegoptiomiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 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 by Thomas Breitkreuz