AGB  ·  Datenschutz  ·  Impressum  







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

Case... else

Ein Thema von ToFaceTeKilla · begonnen am 28. Apr 2009 · letzter Beitrag vom 28. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#1

Case... else

  Alt 28. Apr 2009, 14:09
Heyho,

hab mal ne Frage zu Case-Bedingungen:
Wenn ich einen Dialog mittels Case aufrufe
Delphi-Quellcode:
case MessageDlg('Wuppdi',mtError,[mbOk,mbNo,mbCancel],0) of
          mrOK : begin
                  ...
                  end;
          mrNo : begin
                 end;
     
          else : begin
                 end;
        end;
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?
Bei mir wird das immer übersprungen...
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Case... else

  Alt 28. Apr 2009, 14:13
Stimmt, das else sollte alle Fälle abfangen, die zu keinem case-Label passen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#3

Re: Case... else

  Alt 28. Apr 2009, 14:15
Tuts eigentlich auch... Aber das original Statement hat sicherlich noch was zwischen begin...end, oder? Sonst wird das nämlich gnadenlos wegoptimiert...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#4

Re: Case... else

  Alt 28. Apr 2009, 14:18
Vermutlich ist es das gleiche Problem, dashier behandelt wurde.
Ralph
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Case... else

  Alt 28. Apr 2009, 14:25
Zitat von taaktaak:
Vermutlich ist es das gleiche Problem, dashier behandelt wurde.
Leider nicht, weil bei mir in dem else-Label ein exit steht. Quasi genau umgekehrter Fall. Auch wenn ich nen Breakpoint drauf setz, wird es nicht angesprungen Oo
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: Case... else

  Alt 28. Apr 2009, 14:31
Zeig doch mal den Originalcode.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#7

Re: Case... else

  Alt 28. Apr 2009, 14:34
Hmmm, seltsam, hab's ausprobiert:
Bei mir funktioniert das genau wie erwartet.


ähhhh - allerdings mit einem Unterschied: Nach else kein Doppelpunkt
Ralph
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Case... else

  Alt 28. Apr 2009, 14:35
Moin,

hinter else kommt kein ":".
Einfach
else
begin
...
end;

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Case... else

  Alt 28. Apr 2009, 14:39
Man beachte das mrCancel, was ich gerade mal noch zum Testen hinzugefügt hab...
Delphi-Quellcode:
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;
EDIT:
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
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: Case... else

  Alt 28. Apr 2009, 15:29
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:13 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