![]() |
bestimmtes element eines arrays nach einem wert durchsuchen
hi all!
ich bräuchte ne funktion die folgendes macht (ist jetzt halb pseudocode^^):
Delphi-Quellcode:
gibts sowas schon oder, is es überhaupt machbar??
function searcharray(array1:tarray;element1:telement;value1:string):integer;
var i:integer; found:boolean; begin found:=false; for i:=0 to length(array1)-1 do begin if (array1.element1[i]=value1) then begin found:=true; result:=i; break; end; end; if (found=false) then result:=-1; end; danke! tim |
Re: bestimmtes element eines arrays nach einem wert durchsuc
ich kenn keine solche funktion, allerdings kann man das auch einfacher machen (ohne found-variable) - und vor allem ohne break was fast so beliebt ist wie globale Variable oder Goto's
Delphi-Quellcode:
function searcharray(array1:tarray;element1:telement;value1:string):integer;
var i, len:integer; begin len := length(array); result := -1; i := 0; while (i < len) and (result = -1) do begin if array1.element1[i] = value1 then result := i; inc(i); end; end; |
Re: bestimmtes element eines arrays nach einem wert durchsuc
Doch, wenn Du kein Array, sondern eine TList nimmst. TList.IndexOf (aElement)
|
Re: bestimmtes element eines arrays nach einem wert durchsuc
Mal eine Frage außerhalb des Protokolls: warum sind break-Anweisungen und globale Variablen unbeliebt? Gibt es da eine sinnvolle Begründung? Ich meine, es gibt eine für die Unbeliebtheit von GoTo's.
Kann auch an mir liegen: ich schreibe "Standard" nachwievor mit d hinten und das ist auch unbeliebt... Grüße, Messie |
Re: bestimmtes element eines arrays nach einem wert durchsuc
da gibts nen extra thread zu dem thema global. Breaks und goto's sind deswegen so unbeliebt weil damit an irgendwelche stellen gesprungen werden kann und das ganze teilweise dadurch etwas unübersichtlich wird.
|
Re: bestimmtes element eines arrays nach einem wert durchsuc
Zitat:
viiieeelen dank^^ |
Re: bestimmtes element eines arrays nach einem wert durchsuc
Zitat:
|
Re: bestimmtes element eines arrays nach einem wert durchsuc
Zitat:
So wie angegeben "array1.element1[i]=" ergibt es aber keinen Sinn. TList.Sort bietet die Möglichkeit einen benutzerdefinierten Vergleich anzugeben. IndexOf kann dies nicht, da nur nach dem Zeiger gesucht wird, man aber nicht angeben kann, daß stattdessen mit array1.element[i] verglichen wird. Du könntest aber eine allgemeine Suchfunktion schreiben die ähnlich wie Sort eine Vergleichs-Funktion als Parameter bekommt. Ist dann die Liste noch sortiert kann man binäre Suche anwenden, was eine sehr schöne Laufzeit von log_2(n) hat, wobei n=Anzahl der Elemente. |
Re: bestimmtes element eines arrays nach einem wert durchsuc
ops..sorry
ihr müsst euch die deklarination vom dem zu durchsundenen array so vorstellen(ungefähr)
Delphi-Quellcode:
type ttestarray = record
element: array of string; //dieses ding^^ will ich durchsuchen! end; [...] var array1=array of ttestarray; |
Re: bestimmtes element eines arrays nach einem wert durchsuc
@prinz_inzide: Ist dir bekannt, dass man mit Pascal auch mehrdimensionale Arrays deklarieren kann?
Delphi-Quellcode:
Grüße vom marabu
var
a1: array [1..5, 1..8] of integer; a2: array of array of integer; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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