AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Item eines arrays anhand eines strings?
Thema durchsuchen
Ansicht
Themen-Optionen

Item eines arrays anhand eines strings?

Ein Thema von Pseudemys Nelsoni · begonnen am 6. Dez 2004 · letzter Beitrag vom 7. Dez 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Item eines arrays anhand eines strings?

  Alt 6. Dez 2004, 02:14
Tag,

ist soetwas wie das hier:

MyArray['suchwort'].irgendwas... möglich?

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
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Item eines arrays anhand eines strings?

  Alt 6. Dez 2004, 02:28
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
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Item eines arrays anhand eines strings?

  Alt 6. Dez 2004, 03:00
Ü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
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Item eines arrays anhand eines strings?

  Alt 6. Dez 2004, 18:21
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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Item eines arrays anhand eines strings?

  Alt 7. Dez 2004, 04:57
Zitat von Christian Seehase:
  iIndex := FMyArray.IndexOf(sIndex);
TStingList (bzw. TStrings) macht's aber auch über eine lineare Suche:
Delphi-Quellcode:
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;
Es sei denn die Eigenschaft "Sorted" von TStringList ist "true", dann wird irgendwie was anderes gemacht (habs nicht ganz geschnallt was genau ).

Wollte ich nur angemerkt haben -> ohne Schleife (wenn auch in der RTL versteckt) geht's nicht.

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#6

Re: Item eines arrays anhand eines strings?

  Alt 7. Dez 2004, 06:06
Zitat von dizzy:
Es sei denn die Eigenschaft "Sorted" von TStringList ist "true", dann wird irgendwie was anderes gemacht (habs nicht ganz geschnallt was genau ).
Nicht ganz korrekt. IndexOf macht immer Lineare Suche. Wenn du Sorted auf true setzt kannst du allerdings Find benutzten. Dort wird dann binär gesucht. Vielleicht hilft eine Suche bei Google nach Bei Google suchenBinärsuche
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Item eines arrays anhand eines strings?

  Alt 7. Dez 2004, 06:33
Zitat von jim_raynor:
Nicht ganz korrekt. IndexOf macht immer Lineare Suche. Wenn du Sorted auf true setzt kannst du allerdings Find benutzten. Dort wird dann binär gesucht. Vielleicht hilft eine Suche bei Google nach Bei Google suchenBinärsuche
Ja sag ich doch: "irgendwie was anderes"
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  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 07:31 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