Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Probleme mit Case anweisung (https://www.delphipraxis.net/80091-probleme-mit-case-anweisung.html)

Gehstock 2. Nov 2006 21:32


Probleme mit Case anweisung
 
Delphi-Quellcode:
Var
land : string;
prov : string;
begin
land := Copy(MaskEdit6.Text, 1, Length(MaskEdit6.Text)-2);
prov := MaskEdit6.Text [6];

case (land) of
'0000':Label53.Caption := 'Keiner';
'020C':Label53.Caption := 'Deutschland';
'01d0':Label53.Caption := 'Österreich';
'01c8':Label53.Caption := 'Schweiz';
er sucht einen ordinal type

mkinzler 2. Nov 2006 21:34

Re: Probleme mit Case anweisung
 
Strings sind keine ordinale Typen, es müßen z.B. Integer sein.

3_of_8 2. Nov 2006 21:35

Re: Probleme mit Case anweisung
 
Das geht so nicht. Case funktioniert nur mit Ordinaltypen. Ein String ist kein Ordinaltyp.

Wenn man sich mal den ASM-Code für case ansieht, versteht man auch warum. ;)

Außerdem fehlt ein end;

turboPASCAL 2. Nov 2006 21:35

Re: Probleme mit Case anweisung
 
bei einer Case - Anweisung muss der Typ ordinal sein. (Integer, Byte etc.)

Gehstock 2. Nov 2006 21:39

Re: Probleme mit Case anweisung
 
und wie bekomm ich den maskEdit.text in ordinal

3_of_8 2. Nov 2006 21:43

Re: Probleme mit Case anweisung
 
Gar nicht. Ifs verwenden. Oder ein Array, Stringlist sowas in der Art.

Hawkeye219 2. Nov 2006 22:34

Re: Probleme mit Case anweisung
 
Hallo Gehstock,

in deinem Beispiel sind die CASE-Labels Hexadezimalzahlen. Falls dies für alle möglichen Werte gilt, könntest du folgende Lösung verwenden:

Delphi-Quellcode:
case StrToIntDef('$' + land, -1) of
  $0000 : Label53.Caption := 'Keiner';
  $020C : Label53.Caption := 'Deutschland';
  $01D0 : Label53.Caption := 'Österreich';
  $01C8 : Label53.Caption := 'Schweiz';
else
  Label53.Caption := '(ungültig)';
end;
Handelt es sich nicht nur um Hexadezimalwerte, solltest du dir die Funktion Delphi-Referenz durchsuchenAnsiIndexText ansehen: klick

Gruß Hawkeye

DP-Maintenance 3. Nov 2006 10:23

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

Gehstock 3. Nov 2006 12:55

Re: Probleme mit Case anweisung
 
Danke

So anderes problem

also im MaskEdit.Text wird zb. folgendes eingegeben "01B500"das soll in bin gewandelt werden "0000 0001 1011 0101 0000 0000" und dann bestimmten stellen der binzahl bestimmte eigenschaften zugeordnet werden.

geht das über "StrToBin" oder "HexToBin" und wie

marabu 3. Nov 2006 13:19

Re: Probleme mit Case anweisung
 
Hallo,

die einzige Konvertierung, die du wirklich brauchst, ist die mittels StrToInt() - wie sie Hawkeye schon gezeigt hat. Willst du ein bestimmtes Bit auswerten, dann geht das z.B. so:

Delphi-Quellcode:
function TestBit(const c: Cardinal; const bit: Byte): Boolean;
begin
  Result := Odd(c shr bit);
end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 Uhr.
Seite 1 von 2  1 2      

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