![]() |
Re: Im Array besonders schnell suchen???
ich würde das Array dann nur andersrum anlegen
Delphi-Quellcode:
TMeinTypInternal = 1..25;
cMeinTypOrdinal:*array[0..455] of TMeinTyp = (0,1,0,0,0,0,0,...,0,0,0,2,0,...,0,3,...25); // ^1 ^15 ^35 ^455 TMeinTyp = Set of TMeinTypInternal; in cMeinTypOrdinal müssen dann nur an den entsprechenden Stellen (entsprechend der Zahlen seiner Varianten) durchnummeriert die Werte des Sets stehen und dann
Delphi-Quellcode:
if cMeinTypOrdinal[zahl] in cMeinTyp then
|
Re: Im Array besonders schnell suchen???
Zitat:
Ausserdem ist das Array jetzt redundant, da an der indexposition jeweils der index abgespeichert ist. [OT] ich muss grad an die Negation denken [/OT] |
Re: Im Array besonders schnell suchen???
ja, sind aber "nur" 456 Bytes :roll:
und wenn du man das Array andersrum (siehe dein Code) anlegt, dann muß man erst das Array durchsuchen und so den Wert darin finden ... so könnte man aber direkt über den Wert umrechnen. |
Re: Im Array besonders schnell suchen???
Zitat:
|
Re: Im Array besonders schnell suchen???
@himitsu:
Will er (der TE) doch gar nicht. Er hat diese Set Elemente und verwaltet damit ob eine Variante verwendet wird oder nicht. Das geht dann sehr schnell mit in. Wenn man aber jetzt den Ordinalwert (wozu auch immer) benötigt, kann mit z.B.
Delphi-Quellcode:
abrufen.
i := cMeinTypOrdinal[mtVariante3];
Für Deinen Ansatz kann ich mir im Moment gar keine Anwendung vorstellen. Gruss |
Re: Im Array besonders schnell suchen???
Guten Abend,
sind die einzelnen Werte nicht berechenbar: 01 -> 1 02 -> 15 (index -2) * 20 + 15 03 -> 35 (index -2) * 20 + 15 04 -> 55 05 -> 75 .. 25 -> 455 (index -3) *20 +15 könnte man sich dadurch nicht ein Set oder Array ersparen? Grüße Klaus |
Re: Im Array besonders schnell suchen???
Zitat:
Delphi-Quellcode:
Ich weis aber nicht, ob das auch auf ein großes Array mit wenigen benutzten Elementen hinausläuft ...
type TMeinTyp = (mtVariante1 = 1,
mtVariante2 = 15, mtVariante3 = 35, ... mtVariante25 = 455); TMeinSet = Array[TMeinTyp] of Boolean; procedure whatever var MeinSet: TMeinSet; begin // setzen Meinset[mtVariante3] := true; // prüfen if meinset[mtVariante3] then ... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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 by Thomas Breitkreuz