![]() |
Wert im Array finden?
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 |
Re: Wert im Array finden?
Delphi-Quellcode:
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; |
Re: Wert im Array finden?
Delphi-Quellcode:
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.
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; 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 |
Re: Wert im Array finden?
... einen hab' ich noch!
Aufbauend auf den Vorschlag vom Jürgen:
Delphi-Quellcode:
Grüße,
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; Klaus |
Re: Wert im Array finden?
Ö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?
|
Re: Wert im Array finden?
@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 |
Re: Wert im Array finden?
Jupp, da war ein Brett... Danke fürs Entfernen :D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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