AGB  ·  Datenschutz  ·  Impressum  







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

Wert im Array finden?

Ein Thema von Schucki · begonnen am 10. Aug 2006 · letzter Beitrag vom 11. Aug 2006
Antwort Antwort
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#1

Wert im Array finden?

  Alt 10. Aug 2006, 20:39
Hi,

also ich hab schon einiges gemacht nur das bekomme ich nicht gebacken...
Ich möchte wissen ob ein Wert in dem Array[1..12] of Byte vorhanden ist.

Ich mach das im Moment so...

if (bytW=RX_GSA.aryOn[1])
or (bytW=RX_GSA.aryOn[2])
or (bytW=RX_GSA.aryOn[3])
or (bytW=RX_GSA.aryOn[4])
or (bytW=RX_GSA.aryOn[5])
or (bytW=RX_GSA.aryOn[6])
or (bytW=RX_GSA.aryOn[7])
or (bytW=RX_GSA.aryOn[8])
or (bytW=RX_GSA.aryOn[9])
or (bytW=RX_GSA.aryOn[10])
or (bytW=RX_GSA.aryOn[11])
or (bytW=RX_GSA.aryOn[12])
then beep;

Das funktioniert zwar aber das läst mir keine Ruhe, es geht bestimmt auch anders, also einfacher...
Nur wie?

Dachte mit

if bytW in RX_GSA.aryOn then beep;

nur das geht nicht...

Für jeden Tip dankbar, Frank
Frank
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: Wert im Array finden?

  Alt 10. Aug 2006, 20:40
if bytW in [RX_GSA.aryOn[1], RX_GSA.aryOn[2], RX_GSA.aryOn[3], ...] then
Delphi-Quellcode:
  for i := 0 to high(RX_GSA.aryOn) do
  begin
   if (bytW = RX_GSA.aryOn[i]) then
   ...
  end;
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

Re: Wert im Array finden?

  Alt 11. Aug 2006, 07:21
Delphi-Quellcode:
function ByteArray_Contains( const arr: Array of Byte; const c: byte ): Boolean;
var i0: integer;
begin
  Result := false;
  i0 := Low(arr) - 1;
  while ( (not Result) and (i0 < High(arr)) )
  do begin
    Inc(i0);
    // if (arr[i0] = c)
    // then Result := true;
    // [/edit] verkürzt wie folgt; das ist unproblematisch,
    // weil nach positivem Result die Schleife beendet wird
    Result := arr[i0] = c;
  end;
end;
Ein Blick in die Delphi-Quelltexte (ab Pro mitgeliefert) zeigt, dass auch IndexOf-Funktionen meistens nichts anderes machen, als ein Array in einer Schleife zu durchlaufen.

Bitte nicht sauer sein: Ich arbeite zz. fast nur in C#; deshalb habe ich oben vielleicht eine Delphi-Schreibweise nicht korrekt eingetragen.

Vielleicht hilft's. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Wert im Array finden?

  Alt 11. Aug 2006, 07:44
... einen hab' ich noch!

Aufbauend auf den Vorschlag vom Jürgen:

Delphi-Quellcode:
function ByteArray_Contains( const arr: Array of Byte; const c: byte ): Boolean;
var
  i0: integer;
begin
  i0 := Low(arr);
  while (iO <=High(arr)) and (arr[iO] <> c) do
    inc(iO);
  Result := (iO <= High(arr));
end;
Grüße,
Klaus
Klaus
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#5

Re: Wert im Array finden?

  Alt 11. Aug 2006, 07:57
Öhm, Klaus? Da du am Anfang auf iO den Wert low(arr) zuweist und nur bis max. high(arr) inkrementierst wird (iO <= High(arr)) immer true ergeben, oder hab ich gerade ein Brett vorm Kopf?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Wert im Array finden?

  Alt 11. Aug 2006, 08:06
@Thanatos81

wenn High(arr) erreicht ist, wird iO nochmals um 1 erhöht.
Und damit kann ich dann eine Aussage treffen ob der Wert im Array vorhanden
ist oder nicht.
Ist iO im Bereich von Low(arr) und einschließlich High(arr)
dann ist ein Wert gefunden worden.
Wurde High(arr) überschritten ist der Wert im Array nicht gefunden worden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#7

Re: Wert im Array finden?

  Alt 11. Aug 2006, 09:48
Jupp, da war ein Brett... Danke fürs Entfernen
  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 08:27 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