![]() |
Item eines arrays anhand eines strings?
Tag,
ist soetwas wie das hier:
Delphi-Quellcode:
möglich?
MyArray['suchwort'].irgendwas...
ich meine kann ich ein item eines arrays mit einem string bekommen statt mit einem ordinalen typ? ich suche irgendwie einen weg (falls überhaupt möglich) nicht ewig schleifen dafür benutzen zu müssen |
Re: Item eines arrays anhand eines strings?
Moin,
muss es unbedingt ein string sein? Was spricht gegen einen Aufzählungstypen? Der ist doch dann auch aussagekräftiger. Wenn es unbedingt ein String sein muss, würde ich eine eigene Klasse schreiben und dort über einen Property die Item-Suche-Methode realisieren. Kannst ja nochmal etwas genauer werden. MfG Thorsten |
Re: Item eines arrays anhand eines strings?
Über Strings indizieren!? Keine Chance. Bei ungeordneten nicht ordinalen Schlüsseln bleibt dir nichts anderes als eine lineare Suche in einer Schleife nach den Schlüsseln. Und selbst da geht's nicht über den Index, sondern der Schüssel muss in den Elementen enthalten sein.
Evtl. ist eine Liste oder gar ein Baum für dein Vorhaben geeigneter? Gruss, Fabian |
Re: Item eines arrays anhand eines strings?
Moin Pseudemys Nelsoni,
mit ein bisschen Aufwand geht's:
Delphi-Quellcode:
type
TMyObject = class(TObject) end; TMyType = class(TObject) private FMyArray : TStringList; function GetMyArray(sIndex: string): TMyObject; public property MyArray[sIndex : string] : TMyObject read GetMyArray; end; implementation {$R *.DFM} { TMyType } function TMyType.GetMyArray(sIndex: string): TMyObject; var iIndex : integer; begin Result := nil; iIndex := FMyArray.IndexOf(sIndex); if iIndex = -1 then exit; Result := TMyObject(FMyArray.Objects[iIndex]); end; |
Re: Item eines arrays anhand eines strings?
Zitat:
Delphi-Quellcode:
Es sei denn die Eigenschaft "Sorted" von TStringList ist "true", dann wird irgendwie was anderes gemacht (habs nicht ganz geschnallt was genau :)).
function TStrings.IndexOf(const S: string): Integer;
begin for Result := 0 to GetCount - 1 do if CompareStrings(Get(Result), S) = 0 then Exit; Result := -1; end; Wollte ich nur angemerkt haben -> ohne Schleife (wenn auch in der RTL versteckt) geht's nicht. Gruss, Fabian |
Re: Item eines arrays anhand eines strings?
Zitat:
|
Re: Item eines arrays anhand eines strings?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 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