AGB  ·  Datenschutz  ·  Impressum  







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

Case-Anweisung für Strings?

Ein Thema von Taladan · begonnen am 18. Jul 2005 · letzter Beitrag vom 18. Jul 2005
Antwort Antwort
Benutzerbild von Taladan
Taladan

Registriert seit: 5. Aug 2003
Ort: Osnabrück
505 Beiträge
 
Delphi 2005 Professional
 
#1

Case-Anweisung für Strings?

  Alt 18. Jul 2005, 21:14
Ich nutze z.z. die Anweisung Case für eine Anweisung mit ca. 40 Ausgängen. Da es wohl noch deutlich mehr werden, will ich gern auf Strings umbauen (wegen der Übersichtlichkeit und Lesbarkeit des Codes). Doch eine Anweisungsreihe á la

if ... = ... then begin end else if ... = ... then begin end else ...

usw ist doch auch sehr viel getippe. Gibt es da eine Anweisung ähnlich wie Case für Strings.

PS: Hat das einen Hintergrund, warum Strings unzulässig sind?
Marco
Wer Rechtschreibfehler findet, der darf sie behalten

Carpe Diem - Nutze den Tag (und zwar den ganzen!)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Case-Anweisung für Strings?

  Alt 18. Jul 2005, 21:17
Nein, für Strings geht es nicht. Und der Grund ist, dass nur ordinal Typen erlaubt sind.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Case-Anweisung für Strings?

  Alt 18. Jul 2005, 21:39
Hi,
wie Luckie schon gesagt hat, ist das ohne weiteres nicht möglich.
Allerdings kannst du dir über einen Umweg die Möglichkeit verschaffen. Wir haben in der Code-Lib auch einen entsprechenden Beitrag, allerdings nur für Delphi for Win32. Aber unter Umständen kannst du dir das ja für deine Wünsche umschreiben. [cl="Case String*"]Such[/cl] am Besten mal danach.

Chris

Diesen Beitrag meine ich.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Case-Anweisung für Strings?

  Alt 18. Jul 2005, 22:41
Welchen Sinn macht diese Einschränkung denn unter .Net? Es gibt doch kein endgültiges Kompilat mehr...
Kleines Beispiel:
Delphi-Quellcode:
type
  Cases = (First, Second, Third);

  SomeClass = class
  public
    procedure DoSomething(someValue : Cases);
  end;

implementation

procedure SomeClass.DoSomething(someValue : Cases);
var
 Dings :string;
begin
  case someValue of
    Cases.First : Dings := 'A';
    Cases.Second : Dings := 'B';
    Cases.Third : Dings := 'C';
  end;
  Console.WriteLine(Dings);
end;
Man könnte jetzt erwarten, dass hier wegen der Pflicht ordinaler Typen irgendwelche coolen Optimierungen laufen...
Pah! Das wird eigentlich erzeugt:
Delphi-Quellcode:
procedure SomeClass.DoSomething(someValue: Cases);
var
  text1: string;
begin
  if (someValue <> Cases.First) then
    if (someValue = Cases.Second) then
      text1 := 'B'
    else if (someValue = Cases.Third) then
      text1 := 'C'
    else
      text1 := 'A';

  Console.WriteLine(text1)
end;
Sorry, aber wo ist hier der Grund für diese Einschränkung? IMHO hat Abwärtskompatibilität seine Grenzen...
case of ist nett um Verschachtelungen zu vermeiden und die TString-Vorschlaghammer methode ist einfach nicht akzeptierbar...
  Mit Zitat antworten Zitat
Antwort Antwort


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 13: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