![]() |
Mehere Werte auf gleichheit überprüfen
Ich würde gerne mehere Werte auf gleichheit hin überprüfen!
Ungfähr so:
Delphi-Quellcode:
Da mekert wer rum!
var Value : array [1..3] of Byte;
{...} if Value[1] = Value[2] = Value[3] then Showmessage('Subba! Alle Werte sind gleich!') Gibt es schon eine Funktion? Oder muss ich die mir selber machen:
Delphi-Quellcode:
(Aso: Bei 3 Werten geht es noch, aber wer weiß ... wie es nachher bei 10 oder 20 Werten ist?)
Result := (Value[1] = Value[2]) and (Value[2] = Value[3])
|
Re: Mehere Werte auf gleichheit überprüfen
machs doch mit einer for - to schleife
überprüfe ob alle werte des arrays dem wert value[1] entsprechen. |
Re: Mehere Werte auf gleichheit überprüfen
Zitat:
Eine for schleife wäre definitiv das mittel der wahl. Aber um mal einen weg zu zeigen, der deiner logik entspräche:
Delphi-Quellcode:
So und nicht anders. Wenn du sagtst Result:= dann erwartet delphi da eine zuweisung. Und mit Value[1]=Value[2] erhältst du keinen wert. Du vergleichst nur zwei array werte, aber ohne das ergebnis zu speichern.
if (Value[1]=Value[2]) and (Value[1]=Value[3]) and (Value[2]=Value[3]) then
Result:=true; |
Re: Mehere Werte auf gleichheit überprüfen
Zitat:
Er hat 2 logischer Vergleiche die einen boolsches Ergebnis liefern und das mit einem logischen UND verknüpft - was soll dabei nicht gehen? |
Re: Mehere Werte auf gleichheit überprüfen
Mit value[1]=value[2] erhält man durchaus einen Wert, nämlich einen Boolean.
Result:=(value[1]=value[2])and(value[2]=value[3]); Ist korrekt. |
Re: Mehere Werte auf gleichheit überprüfen
Zitat:
Gruß Hawkeye |
Re: Mehere Werte auf gleichheit überprüfen
Das müsste doch gehen, oder?
Delphi-Quellcode:
for Value in Array do
Result:=Result and Value; |
Re: Mehere Werte auf gleichheit überprüfen
Nein. in geht nur bei Sets.
|
Re: Mehere Werte auf gleichheit überprüfen
Die FOR-Schleife ist schon korrekt, schaue mal in der Online-Hilfe nach.
Der Compiler wird sich aber weigern, einen Integer-Wert (Value) mit einem Boolean-Wert (Result)zu verknüpfen... Gruß Hawkeye //Edit: bei Delphi 7 geht's natürlich noch nicht... |
Re: Mehere Werte auf gleichheit überprüfen
Zitat:
Delphi-Quellcode:
@emteg: wie schon gesagt, erst testen, dann reden. Zusätzlich ist Deine Lösung auch noch falsch, da Result undefiniert wäre, wenn nicht alle Werte den gleichen Wert hätten ;)
var
Cmp: Byte; I: Integer; begin Result := True; if Length(Value) <= 1 then Exit; Cmp := Value[Low(Value)]; for I := Succ(Low(Value)) to High(Value) do begin if Value[I] <> Cmp then begin Result := False; Break; end; end; end; ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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