![]() |
Probleme mit Case anweisung
Delphi-Quellcode:
er sucht einen ordinal type
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'; |
Re: Probleme mit Case anweisung
Strings sind keine ordinale Typen, es müßen z.B. Integer sein.
|
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; |
Re: Probleme mit Case anweisung
bei einer Case - Anweisung muss der Typ ordinal sein. (Integer, Byte etc.)
|
Re: Probleme mit Case anweisung
und wie bekomm ich den maskEdit.text in ordinal
|
Re: Probleme mit Case anweisung
Gar nicht. Ifs verwenden. Oder ein Array, Stringlist sowas in der Art.
|
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:
Handelt es sich nicht nur um Hexadezimalwerte, solltest du dir die Funktion
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; ![]() ![]() Gruß Hawkeye |
DP-Maintenance
Dieses Thema wurde von "sakura" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
|
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 |
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:
Grüße vom marabu
function TestBit(const c: Cardinal; const bit: Byte): Boolean;
begin Result := Odd(c shr bit); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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-2025 by Thomas Breitkreuz