Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   case (https://www.delphipraxis.net/11675-case.html)

Killer 11. Nov 2003 17:55


case
 
Hi ich hab da mal ne Frage, isses möglich für jede Bedingung in einer Case Abfrage begin-end reinzumachen, weil ich mehrere Sachen ändern will, wenn eine Bedingung eintritt...

Die Muhkuh 11. Nov 2003 17:58

Re: case
 
ja das geht!

Delphi-Quellcode:
case Combobox1.Itemindex of
  0: begin
     //blablabla
     end;
  1: begin
     end;
...

HAF4ever 11. Nov 2003 18:58

Re: case
 
nur vor dem else darf glaub ich dann kein beistrich sein ...
da bin ich mir jetzt nicht sicher ... aber ich glaub schon
Delphi-Quellcode:
case Combobox1.Itemindex of
  0: begin
     //blablabla
     end;
  1: begin
     end
  else begin
    //insert code here ..."
  end

Christian Seehase 11. Nov 2003 20:36

Re: case
 
Moin HAF4ever,

Zitat:

Zitat von HAF4ever
nur vor dem else darf glaub ich dann kein beistrich sein ...

doch, darf. Ist ja kein if / then / else.

Hansa 11. Nov 2003 21:06

Re: case
 
Und nicht vergessen: keine Regel ohne Ausnahme :!: Zu jedem BEGIN gehört ein END. Aber auch zu einem CASE !!

Robert Marquardt 12. Nov 2003 06:52

Re: case
 
Das letzte end gehoert zum begin nach else. Das case braucht noch ein eigenes end.
Mit dem case kann man einen der gemeinsten Fehler in Pascal schreiben.
Ein ";" vor dem else ohne das der Compiler meckert. Ist mir mal passiert.

Nimoee 12. Nov 2003 06:55

Re: case
 
Hallo
wieso ist das ein Fehler? Ist nur ein leeres Statement und das ist zugelassen.
Nimoee

choose 12. Nov 2003 09:10

Re: case
 
Ich glaube Robert meint diesen Effekt:

Delphi-Quellcode:
case foo of
  23: //..
  42: if Bar then SomeAction;
      else AnotherAction
end;
versus
Delphi-Quellcode:
case foo of
  23: //..
  42: if Bar then SomeAction //<--
      else AnotherAction
end;
Der wohl einzige Grund, weshalb überhaupt ein ";" vor dem "else" ungültig ist...?

sakura 12. Nov 2003 09:17

Re: case
 
Zitat:

Zitat von Robert Marquardt
Das letzte end gehoert zum begin nach else. Das case braucht noch ein eigenes end.

Begin nach dem else in einem case :shock: Habe ich noch nie gemacht...

Folgender Code ist einfach mal aus unserem neuen POP3-Server kopiert...
Delphi-Quellcode:
      case AuthType of
        atClear: begin
          Result := Password = Reg.ReadString('Password');
        end;
        atMD5: begin
          Result := CreateMD5(Reg.ReadString('Password')) =
              AnsiLowerCase(Password);
        end;
      else
        raise Exception.Create(UNKNOWN_PWD_VERIFICATION)
      end;
...:cat:...

Robert Marquardt 12. Nov 2003 10:05

Re: case
 
Choose, es geht auch mit try except else end;

Hansa 12. Nov 2003 12:09

Re: case
 
Zitat:

Zitat von choose
Delphi-Quellcode:
case foo of
  23: //..
  42: if Bar then SomeAction;  <--- ; hat mit else nichts zu tun
      else AnotherAction       <--- "CASE-else"
end;                           <--- "CASE-end"

ich schreibe das immer so:

Delphi-Quellcode:
case foo of
  23: //..
  42: if Bar then SomeAction;  <--- ; hat mit else nichts zu tun
  else
    AnotherAction      
end;

Killer 12. Nov 2003 13:15

Re: case
 
Danke Jungs ihr habt mir sehr geholfen :)

[edit=Sharky]Doppelposting gelöscht. Mfg, Sharky[/edit]

Robert Marquardt 12. Nov 2003 15:36

Re: case
 
Hansa, das Problem mit dem Code ist das er je nachdem ob da ein ";" steht oder nicht unterschiedliche Bedeutung bekommt.

Hansa 12. Nov 2003 18:55

Re: case
 
Zitat:

Zitat von Robert Marquardt
...je nachdem ob da ein ";" steht oder nicht unterschiedliche Bedeutung bekommt.

Die Syntax muß doch ein deutig sein, oder nicht ? Zumindest im Kontext. Also vor ELSE kein Strichpunkt, es sei denn vorher steht ein CASE. Mit doppeldeutigen Möglichkeiten ließe sich kein Compiler bauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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