Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi bestimmtes element eines arrays nach einem wert durchsuchen (https://www.delphipraxis.net/46065-bestimmtes-element-eines-arrays-nach-einem-wert-durchsuchen.html)

prinz_inzide 17. Mai 2005 20:05


bestimmtes element eines arrays nach einem wert durchsuchen
 
hi all!

ich bräuchte ne funktion die folgendes macht (ist jetzt halb pseudocode^^):

Delphi-Quellcode:
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;
gibts sowas schon oder, is es überhaupt machbar??

danke!
tim

SirThornberry 17. Mai 2005 20:11

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;

alzaimar 17. Mai 2005 20:17

Re: bestimmtes element eines arrays nach einem wert durchsuc
 
Doch, wenn Du kein Array, sondern eine TList nimmst. TList.IndexOf (aElement)

messie 17. Mai 2005 20:41

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

SirThornberry 17. Mai 2005 20:43

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.

prinz_inzide 17. Mai 2005 20:56

Re: bestimmtes element eines arrays nach einem wert durchsuc
 
Zitat:

Zitat von alzaimar
Doch, wenn Du kein Array, sondern eine TList nimmst. TList.IndexOf (aElement)

kannst du mir erklären, wie das einzubinden/anzuwenden ist?

viiieeelen dank^^

mael 17. Mai 2005 22:22

Re: bestimmtes element eines arrays nach einem wert durchsuc
 
Zitat:

Zitat von SirThornberry
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.

Break und Continue sind sehr sauber. Es wird immer nur die aktuelle Schleife abgebrochen oder der nächste Schleifendurchlauf begonnen. Die Verwendung dieser Konstrukte ist auch übersichtlicher als alles in die Anfangs oder Endbedingung einer Schleife zu schreiben. GOTOs sind unübersichtlich; bei Break und Continue ist der Bezug aber immer direkt ersichtlich.

mael 17. Mai 2005 22:38

Re: bestimmtes element eines arrays nach einem wert durchsuc
 
Zitat:

Zitat von prinz_inzide
hi all!

ich bräuchte ne funktion die folgendes macht (ist jetzt halb pseudocode^^):

Dein Kode ist etwas seltsam. Ist element1 jetzt Teil von array1, also array1.element1[i] oder ist es eine selbständige Variable?
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.

prinz_inzide 18. Mai 2005 13:40

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;

marabu 18. Mai 2005 13:45

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:
var
  a1: array [1..5, 1..8] of integer;
  a2: array of array of integer;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.
Seite 1 von 2  1 2      

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