AGB  ·  Datenschutz  ·  Impressum  







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

case string of (ordinale Typen)

Ein Thema von meximum · begonnen am 26. Nov 2003 · letzter Beitrag vom 28. Nov 2003
Antwort Antwort
meximum

Registriert seit: 21. Nov 2003
14 Beiträge
 
#1

case string of (ordinale Typen)

  Alt 26. Nov 2003, 14:57
Hallo!

Wie löst ihr das problem?

Ich wollte eine auswertung mit case string of durchführen.
case erlaubt jedoch keine String-Typen. bleibt mir da wirklich nichts anderes übrig
als xx-mal if then else schleifen zu benutzen?

Gruss

meximum
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: case string of (ordinale Typen)

  Alt 26. Nov 2003, 15:02
geht das nicht mit einem Aufzählungstyp ? Sind die Strings variabel und erst zur Laufzeit bekannt, kannst Du das CASE sowieso vergessen.
Gruß
Hansa
  Mit Zitat antworten Zitat
meximum

Registriert seit: 21. Nov 2003
14 Beiträge
 
#3

Re: case string of (ordinale Typen)

  Alt 26. Nov 2003, 15:04
ja, es wären ressourcenstrings. okay, danke - bleibt mir wohl nichts anderes übrig
Gruss

meximum
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#4

Re: case string of (ordinale Typen)

  Alt 26. Nov 2003, 15:37
Du könntest den String auf einen Hash-Wert abbilden
Delphi-Quellcode:
case Hash(AString) of
  Hash('foo'): //...
  Hash('bar'): //...
else
  //...
end;
dabei könnten die Hash-Werte der Möglichkeiten auch vorbereichnet werden, weil Konstant
Delphi-Quellcode:
_foo:= Hash('foo');
_bar:= Hash('bar');
//...
case Hash(AString) of
  _foo: //...
  _bar: //...
else
  //...
end;
Nachteil: Nicht eineindeutig, also können verschiedene Strings uU auf den selben Hash-Wert abgebildet werden (hier müsste dann eine erneute Prüfung durchgeführt werden).

Ein anderer Ansätz wäre, die Möglichkeiten als geordnete (ich meine nicht sortiert!) Menge (Array) an eine Funktion zu übergeben, die den String in dieser Menge sucht und dessen Index zurückgibt:
Delphi-Quellcode:
case GetIndexOf(AString, ['foo', 'bar']) of
   0: //...
   1: //...
else
  //...
end;
Nachteil: Mit steigender Cardinalität der Menge ist der Zusammenhang von Index und Wert relativ schwer zu überschauen, darüber hinaus nimmt die Performance linear ab, während sie bei einer Hash-Funktion konstant bleibt.
gruß, choose
  Mit Zitat antworten Zitat
DocMucki

Registriert seit: 23. Mai 2003
3 Beiträge
 
Delphi 6 Professional
 
#5

Re: case string of (ordinale Typen)

  Alt 28. Nov 2003, 08:09
Vieleicht so:

http://www.delphipraxis.net/internal...ect.php?p=4083

DocMucki
  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 12:06 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