AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Case anweisung

Ein Thema von Gehstock · begonnen am 2. Nov 2006 · letzter Beitrag vom 3. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Probleme mit Case anweisung

  Alt 2. Nov 2006, 21:32
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
Marcel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Probleme mit Case anweisung

  Alt 2. Nov 2006, 21:34
Strings sind keine ordinale Typen, es müßen z.B. Integer sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Probleme mit Case anweisung

  Alt 2. Nov 2006, 21:35
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;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: Probleme mit Case anweisung

  Alt 2. Nov 2006, 21:35
bei einer Case - Anweisung muss der Typ ordinal sein. (Integer, Byte etc.)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Probleme mit Case anweisung

  Alt 2. Nov 2006, 21:39
und wie bekomm ich den maskEdit.text in ordinal
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Probleme mit Case anweisung

  Alt 2. Nov 2006, 21:43
Gar nicht. Ifs verwenden. Oder ein Array, Stringlist sowas in der Art.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Probleme mit Case anweisung

  Alt 2. Nov 2006, 22:34
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
  Mit Zitat antworten Zitat
3. Nov 2006, 10:23
Dieses Thema wurde von "sakura" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Probleme mit Case anweisung

  Alt 3. Nov 2006, 12:55
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
Marcel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Probleme mit Case anweisung

  Alt 3. Nov 2006, 13:19
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 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