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


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 07:12 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