Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ist Variable in (Integer-Wert, Integer-Wert) - wie umsetzen? (https://www.delphipraxis.net/162013-ist-variable-integer-wert-integer-wert-wie-umsetzen.html)

raller09 2. Aug 2011 09:43

Delphi-Version: 5

Ist Variable in (Integer-Wert, Integer-Wert) - wie umsetzen?
 
Hi,

mir fällt gerade kein guter Titel ein...

ich muss gerade einige Fehler-Codes Integer-Werte (negativ, bis ca. 9999) auswerten.

Simple:

Delphi-Quellcode:
var
  lFehlerCode: Ingeger;
begin
  lFehlerCode := -99;

  if ((lFehlerCode = -99) or (lFehlerCode = -98)) then
  begin
    ShowMessage('Doof');
  end;
end;
geht das auch einfacher (für 2 Werte ist das Ok, aber sobald das etwas mehr Stati sind...)?

Delphi-Quellcode:
if (lFehlerCode in (-99, -98)) then
Funktioniert nicht, auch nicht mit eckigen Klammern.
Das wäre aber genau das, was ich möchte.


Ein Set kann nur 256 Elemente.
Und eine TList ist mit dem Objekt-Umbau schon overkill.

Delphi-Quellcode:
case lFehlerCode of
  -99, -98: ShowMessage('Doof');
else
  raise Exception.Create('ganz doof');
end
-> case funktioniert, geht es noch einfacher?

Neutral General 2. Aug 2011 09:48

AW: Ist Variable in (Integer-Wert, Integer-Wert) - wie umsetzen?
 
Hallo,

Vielleicht sowas:

Delphi-Quellcode:
function ValueIn(Val: Integer; Arr: Array of Integer): Boolean;
var i: Integer;
begin
  Result := false;
  for i:= 0 to High(Arr) do
    if Arr[i] = Val then
      exit(true);
end;

// Aufruf:

if ValueIn(lFehlerCode,[-99,-98]) then
  ShowMessage('Doof');

DeddyH 2. Aug 2011 10:04

AW: Ist Variable in (Integer-Wert, Integer-Wert) - wie umsetzen?
 
Delphi-Referenz durchsuchenmath.InRange, oder hab ich das falsch verstanden?

raller09 2. Aug 2011 10:21

AW: Ist Variable in (Integer-Wert, Integer-Wert) - wie umsetzen?
 
hi,

InRange geht nicht, da es keine "Range" ist.

Die Funktion "ValueIn" sieht gut aus, werd ich so mache.
Dachte nur, das Delphi dafür schon ein Sprach-Konstrukt hat.

MfG

raller09

himitsu 2. Aug 2011 12:45

AW: Ist Variable in (Integer-Wert, Integer-Wert) - wie umsetzen?
 
Zitat:

Zitat von raller09 (Beitrag 1114618)
InRange geht nicht, da es keine "Range" ist.

Im Prinzip schon.


Delphi-Quellcode:
(-99 = x) and (X = -98)
entspricht
Delphi-Quellcode:
(-99 >= x) and (X <= -98)
und für diesen Fall arbeitet InRange optimaler, als ValueIn, da dort nicht erst ein Array erstellt und durchlaufen werden muß.

DeddyH 2. Aug 2011 12:51

AW: Ist Variable in (Integer-Wert, Integer-Wert) - wie umsetzen?
 
Ich habe den Einwand so verstanden, dass es sich nicht unbedingt um einen zusammenhängenden Bereich handeln muss, sondern auch etwas wie [4,11,123] vorkommen kann. In dem Fall kommt man mit InRange tatsächlich nicht weiter.

r2c2 2. Aug 2011 13:56

AW: Ist Variable in (Integer-Wert, Integer-Wert) - wie umsetzen?
 
Gibt es einen Grund, warum du überhaupt Fehlercodes einsetzt? Oder bist du dazu gezwungen bzw. sind die gar nicht von dir?

mfg

Christian


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