AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi bestimmtes element eines arrays nach einem wert durchsuchen
Thema durchsuchen
Ansicht
Themen-Optionen

bestimmtes element eines arrays nach einem wert durchsuchen

Ein Thema von prinz_inzide · begonnen am 17. Mai 2005 · letzter Beitrag vom 18. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2      
prinz_inzide

Registriert seit: 24. Jan 2005
64 Beiträge
 
#1

bestimmtes element eines arrays nach einem wert durchsuchen

  Alt 17. Mai 2005, 20:05
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: bestimmtes element eines arrays nach einem wert durchsuc

  Alt 17. Mai 2005, 20:11
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;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: bestimmtes element eines arrays nach einem wert durchsuc

  Alt 17. Mai 2005, 20:17
Doch, wenn Du kein Array, sondern eine TList nimmst. TList.IndexOf (aElement)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#4

Re: bestimmtes element eines arrays nach einem wert durchsuc

  Alt 17. Mai 2005, 20:41
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: bestimmtes element eines arrays nach einem wert durchsuc

  Alt 17. Mai 2005, 20:43
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
prinz_inzide

Registriert seit: 24. Jan 2005
64 Beiträge
 
#6

Re: bestimmtes element eines arrays nach einem wert durchsuc

  Alt 17. Mai 2005, 20:56
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^^
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#7

Re: bestimmtes element eines arrays nach einem wert durchsuc

  Alt 17. Mai 2005, 22:22
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.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#8

Re: bestimmtes element eines arrays nach einem wert durchsuc

  Alt 17. Mai 2005, 22:38
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.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat
prinz_inzide

Registriert seit: 24. Jan 2005
64 Beiträge
 
#9

Re: bestimmtes element eines arrays nach einem wert durchsuc

  Alt 18. Mai 2005, 13:40
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;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: bestimmtes element eines arrays nach einem wert durchsuc

  Alt 18. Mai 2005, 13:45
@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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:58 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