Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi if Abfragen abkürzen (https://www.delphipraxis.net/586-if-abfragen-abkuerzen.html)

Daniel B 11. Aug 2002 12:18


if Abfragen abkürzen
 
:hi:

kann mir vielleicht bitte jemand sagen ob und wie ich diese Abfrage abkürzen kann?

Code:
  if CPBaud = '2400' then
  begin
    CBBaud.ItemIndex := 0;
  end
  else if CPBaud = '4800' then
  begin
    CBBaud.ItemIndex := 1;
  end
  else if CPBaud = '9600' then
  begin
    CBBaud.ItemIndex := 2;
  end
  else if CPBaud = '14400' then
  begin
    CBBaud.ItemIndex := 3;
  end
  else if CPBaud = '19200' then
  begin
    CBBaud.ItemIndex := 4;
  end
  else if CPBaud = '28800' then
  begin
    CBBaud.ItemIndex := 5;
  end
  else if CPBaud = '38400' then
  begin
    CBBaud.ItemIndex := 6;
  end;
Vielen Dank.

Chewie 11. Aug 2002 12:30

Mit case geht das. So würde das da z. B. aussehen:

Code:
case StrToInt(CPBaud) of
  2400: CBBaud.ItemIndex := 0;
  4800: CBBaud.ItemIndex := 1;
  9600: CBBaud.ItemIndex := 2;
  14400: CBBaud.ItemIndex := 3;
  19200: CBBaud.ItemIndex := 4;
  28800: CBBaud.ItemIndex := 5;
  38400: CBBaud.ItemIndex := 6;
end;
Da man case-Anweisungen nicht so ohne weiteres auf Strings anwenden kann, hab ich den String in einen Integer umgewandelt. Wenn der String nur diese Werte haben kann, dürfte das ja keine Probleme geben.

In diesem Fall könntest du aber evtl. auch auf Abfragen verzichten und den Faktor mit einer mathematischen Beziehung ermitteln. Bei diesen Zahlen dürfte dies relativ leicht sein.

Daniel 11. Aug 2002 12:33

Hallo,

in Erweiterung zum Vorschlag von chewie würde ich statt der Funktion "StrToInt()" lieber "StrToIntDef(..,-1)" verwenden und den Fehlerwert '-1' mit in die Case-Abfrage integrieren. Dann hättest Du sogar eine halbwegs passable Fehlerbehandlung.


Grüße,
Daniel

MathiasSimmack 11. Aug 2002 12:34

Von mir gibt´s die Idee:
Code:
[b]const[/b]
  Bauds = [b]array[/b][0..6][b]of[/b] [b]string[/b];
    ('2400','4800','9600','14400','19200','28800','38400');
[b]var[/b]
  i : integer;
[b]begin[/b]
  [b]for[/b] i := 0 [b]to[/b] 6 [b]do[/b]
    [b]if[/b](CPBaud = Bauds[i]) [b]then[/b]
      [b]begin[/b]
        CBBaud.ItemIndex := i; break;
      [b]end[/b];
[b]end[/b];
Für Daniel: Um hier eine Fehlerbehandlung zu haben, könnte man den ItemIndex von "CBBaud" hier vor dem Schleifendurchlauf auf einen Default-Wert setzen. :wink:

Daniel B 11. Aug 2002 12:44

Alles Klar. Danke euch allen. http://n-digital.info/Bilder/daumen.gif


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