Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   IOC-Code 2 Nationname und zurück (https://www.delphipraxis.net/160891-ioc-code-2-nationname-und-zurueck.html)

Coffeecoder 7. Jun 2011 13:11

AW: IOC-Code 2 Nationname und zurück
 
Zitat:

Zitat von fkerber (Beitrag 1105046)
Hi,

sollte man nicht nach einem match auch aus der Funktion rausspringen?
Anderenfalls werden ja im Extremfall noch n-1 ifs verglichen, die alle nur noch false sein können?


LG, Frederic

Dann könntest du gleich mit nem Case arbeiten und dann "exit" nach der Wertzuweisung.

fkerber 7. Jun 2011 13:13

AW: IOC-Code 2 Nationname und zurück
 
Hi,

aber case geht doch nur bei Ordinaltypen, oder?


LG, Frederic

Coffeecoder 7. Jun 2011 13:17

AW: IOC-Code 2 Nationname und zurück
 
Zitat:

Zitat von fkerber (Beitrag 1105048)
Hi,

aber case geht doch nur bei Ordinaltypen, oder?


LG, Frederic

[OT] Da tauchte ich wieder in die Welt von Java (das sollte in der neuen Version funktionieren) [\OT]
Zurück in Delphi hast Recht.
Am besten löst man die Aufgabe wie mkinzler schon gesagt mit ner DB oder XML Datei.
Alles andere ist zu hartkodiert.

p80286 7. Jun 2011 13:18

AW: IOC-Code 2 Nationname und zurück
 
wie wäre es mit sowas
Delphi-Quellcode:
function Uebersetzen(const inw:string[3]):string;
begin
 case longint(inw) of
  longint('ABC'):result:='abcdef'
..
Gruß
K-H

himitsu 7. Jun 2011 14:29

AW: IOC-Code 2 Nationname und zurück
 
Delphi-Quellcode:
function Uebersetzen(const inw: String): String;
var
  S: String[3];
begin
  ZeroMemory(@S, SizeOf(S), 0); // s := #0#0#0;
  S := AnsiString(inv);
  case LongInt(S) of
    ...
Der Grund ist, daß die ungenutzen Zeichen undefiniert und somit zufällig sind.
Womit die Integer nicht eindeutig sind, was schlecht ist, für den Vergleich.

Codewalker 7. Jun 2011 15:01

AW: IOC-Code 2 Nationname und zurück
 
Oder man nutzt die Funktion
Delphi-Quellcode:
StrUtils.IndexText
. Damit kann man bequem ein case nutzen und das ganze ist auf Wunsch (IndexText <-> IndexStr) auch noch case-insensitive.

Was die n-1 if's angeht: Würde bei sowas nicht die Compileroptimierung zuschlagen? Es dürfte imho durchaus erkennbar sein, dass im jeweiligen Scope nur ein Pfad erfolgreich ist und der Rest ignoriert werden kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr.
Seite 2 von 2     12   

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