AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Indexnummer von Textelement ermitteln

Ein Thema von Gargamel · begonnen am 1. Mai 2012 · letzter Beitrag vom 1. Mai 2012
Antwort Antwort
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#1

Indexnummer von Textelement ermitteln

  Alt 1. Mai 2012, 17:02
Hi

Wenn man ein Array wie z.B. dieses hier hat...

Delphi-Quellcode:
var liste:array[0..9] of string;

liste[0]:='A';
liste[1]:='B';
liste[2]:='C';
liste[3]:='D';
liste[4]:='E';
liste[5]:='F';
liste[6]:='G';
liste[7]:='H';
liste[8]:='I';
liste[9]:='J';
..., ist es ja einfach, mit den Indexnummern auf den dazugehörigen Text zuzugreifen. Nun möchte ich aber genau den umgekehrten Weg gehen.
Ich will also von jedem der 10 Strings die Indexnummer ermitteln.
Der einfachste, aber für den PC aufwändigste Weg, wäre, die Liste 10x stur abzufragen. In diesem Beispiel kam ich gleich mal auf 45 Abfragen.

Wenn die Liste aber 500 (und mehr) Einträge enthält, mache ich mir doch schon Sorgen, daß die gesamte Prozedur, zeitlich gesehen, zu umfangreich ausfällt.

Hat jemand eine Idee? Hilfreich ist evtl. zu wissen, daß keiner der Strings doppelt vorkommt.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Indexnummer von Textelement ermitteln

  Alt 1. Mai 2012, 17:06
Machbar mit ner Schleife die alle Elemente durchgeht und kuckt, ob das Element gefunden wurde. Bei Fund, den Wert der Schleifenvariable als Ergebnis zurückgeben (das was du willst).

Noch ne Kleinigkeit -> All deine Elemente sind 1 Zeichen lang -> das sind keine Strings (ZeichenKETTEN) sondern Zeichen -> "Char"!

Edit: Blöd ists, wenn man keine Schleifen kennt. Da müsste man nun wirklich nen riesengroßen Codeblock schreiben, in dem alle Prüfungen stattfinden. Weiters funktioniert das auch nur mit statischen Arrays (bei beliebig großen nicht!).
Schleifen
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton ( 1. Mai 2012 um 17:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Indexnummer von Textelement ermitteln

  Alt 1. Mai 2012, 17:09
Sofern das Array sortiert ist, kann eine binäre Suche das Ganze auch enorm beschleunigen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Indexnummer von Textelement ermitteln

  Alt 1. Mai 2012, 17:11
Man könnte eine Stringliste verwenden. Diese besitzt die Methode IndexOf() um den Index eines Strings zu ermitteln. Zudem kann man in der Eigenschaft Duplicates festlegen, ob/was bei dem Versuch doppelte Einträge zu Erstellen, geschieht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Indexnummer von Textelement ermitteln

  Alt 1. Mai 2012, 17:14
Hilfreich ist evtl. zu wissen, daß keiner der Strings doppelt vorkommt.
Ja das ist wichtig. Wenn die Strings aufsteigend sortiert sind,
dann kann man Binäre Suche oder Interpolationssuche anwenden.

Bevor du aber anfängst einen dieser Algorithmen auf dein Array umzusetzen, kann man auch gleich einen Schritt weitergehen und prüfen, ob es das nicht schon längst gibt.
Gibt es natürlich schon und wird je nach Prog-Sprache als HashMap oder Dictionary bezeichnet.
http://www.delphipraxis.net/97547-th...mentation.html
  Mit Zitat antworten Zitat
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#6

AW: Indexnummer von Textelement ermitteln

  Alt 1. Mai 2012, 19:57
Danke erstmal für Eure Antworten.

Ich habe etwas mit TStringList experimentiert. Das scheint genau das zu sein, wonach ich suchte. Klappt wunderbar.

Noch einen schönen Abend...
  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 15:20 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