Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Übersetzung C -> Delphi: Switch ohne break (https://www.delphipraxis.net/109998-uebersetzung-c-delphi-switch-ohne-break.html)

Luckie 11. Mär 2008 12:40


Übersetzung C -> Delphi: Switch ohne break
 
Ich habe in Co folgende Switch-Anweisung:
Code:
switch x {
  case 0:
    tuwas;
    break;
  case 1:
    tuwas;
    // kein break, damit mit folgendem case-Zweig weitergemacht wird
  case 2:
    tuwas;
    break;
}
Ich kann in Delphi zwar schreiben:
Delphi-Quellcode:
case x of
  0:
  begin
  end;
  1, 2:
  begin
  end;
end;
Aber dann kann man den 2'er Zweig nie alleine ansprechen, was aber auch möglich sein muss. Ich habe nur die Werte 0 bis 2.

Wie löse ich so was am geschicktesten?

jfheins 11. Mär 2008 12:52

Re: Übersetzung C -> Delphi: Switch ohne break
 
Wenn ich mich nicht irre, gibt es sowas in Delphi nicht, das heißt,
du musst wohl oder übel den Code für 2 auch nochmal zu 1 kopieren ;)

Wenns ganz viel Code ist, kannste es ja auch in ne funktion auslagern ;)

Bernhard Geyer 11. Mär 2008 12:54

Re: Übersetzung C -> Delphi: Switch ohne break
 
Zitat:

Zitat von jfheins
du musst wohl oder übel den Code für 2 auch nochmal zu 1 kopieren ;)
Wenns ganz viel Code ist, kannste es ja auch in ne funktion auslagern ;)

Ich würde dafür eine lokale Funktion nehmen.

ralfschwalbe 11. Mär 2008 12:56

Re: Übersetzung C -> Delphi: Switch ohne break
 
Hi,

Delphi-Quellcode:
case x of
  0: begin
       tuwas_case0;
     end;
  1,
  2: begin
       tuwas_case1und2;
       if x = 2 then
       begin
         tuwas_case2;
       end;
     end;
end;

Luckie 11. Mär 2008 13:27

Re: Übersetzung C -> Delphi: Switch ohne break
 
Ich habe es jetzt einfach kopiert, es waren nur ein paar Zeilen. Aber danke für eure Vorschläge.

Haru 29. Apr 2009 16:10

Re: Übersetzung C -> Delphi: Switch ohne break
 
hätt jetzt zu dem thema auch mal ne frage.

wir sollen einen getränkeautomaten mit case programmiern. das programm soweit hab ich fertig. lediglich eine fehlermeldung stört mich und diese bekomm ich trotz inet hilfen nicht weg. könntet ihr mir helfen?
Delphi-Quellcode:
case edtGetr.text of
(zur Getränke auswahl)dort sagt er mir
Zitat:

Ordinaltyp erforderlich
(kein String erlaubt) aber auch wenn ich dieses Editfenster bzw dem Text dort einen anderem Typ zuweise bekomme ich diese Fehlermeldung.

hoffe ihr könnt mir helfen =)

Meflin 29. Apr 2009 16:18

Re: Übersetzung C -> Delphi: Switch ohne break
 
Zitat:

Zitat von Haru
hoffe ihr könnt mir helfen =)

Jo: Es geht halt einfach nicht mit strings, sondern nur mit Ordinaltypen (alles was man zählen kann, also Integer, Word, Enums, Boolsche Ausdrücke (ok kann man nicht zählen aber egal :mrgreen:))

Haru 29. Apr 2009 16:21

Re: Übersetzung C -> Delphi: Switch ohne break
 
das weiß ich ja auch. aber wie gesagt. wenn ich edtGetr.text in zb integer umwandel gehts trotzdem nicht :D

Meflin 29. Apr 2009 16:25

Re: Übersetzung C -> Delphi: Switch ohne break
 
Zitat:

Zitat von Haru
das weiß ich ja auch. aber wie gesagt. wenn ich edtGetr.text in zb integer umwandel gehts trotzdem nicht :D

Wenn du in das Edit ne Zahl eingibst, dann geht das ;)

Bzw. was "geht dann nicht"??

Bernhard Geyer 29. Apr 2009 16:26

Re: Übersetzung C -> Delphi: Switch ohne break
 
Zitat:

Zitat von Haru
das weiß ich ja auch. aber wie gesagt. wenn ich edtGetr.text in zb integer umwandel gehts trotzdem nicht :D

Wirklich nicht?

Delphi-Quellcode:
case StrToInt(edtGetr.text) of
  0:
  1:
end;
Oder kommt eine Exception das "..." kein gültige Zahl ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 Uhr.
Seite 1 von 4  1 23     Letzte »    

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