AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Mehere Werte auf gleichheit überprüfen

Ein Thema von xZise · begonnen am 15. Apr 2006 · letzter Beitrag vom 15. Apr 2006
Antwort Antwort
Seite 1 von 3  1 23   
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 11:33
Ich würde gerne mehere Werte auf gleichheit hin überprüfen!

Ungfähr so:
Delphi-Quellcode:
var Value : array [1..3] of Byte;
{...}
if Value[1] = Value[2] = Value[3] then
  Showmessage('Subba! Alle Werte sind gleich!')
Da mekert wer rum!
Gibt es schon eine Funktion? Oder muss ich die mir selber machen:

Result := (Value[1] = Value[2]) and (Value[2] = Value[3]) (Aso: Bei 3 Werten geht es noch, aber wer weiß ... wie es nachher bei 10 oder 20 Werten ist?)
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
droppi
(Gast)

n/a Beiträge
 
#2

Re: Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 11:37
machs doch mit einer for - to schleife
überprüfe ob alle werte des arrays dem wert value[1] entsprechen.
  Mit Zitat antworten Zitat
emteg

Registriert seit: 16. Jun 2005
71 Beiträge
 
Delphi 2009 Architect
 
#3

Re: Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 12:10
Zitat:
Result := (Value[1] = Value[2]) and (Value[2] = Value[3])
Wo hast du denn das her? Arbeitest du sonst mit ner anderen sprache? Also delphi ist das sicher nicht

Eine for schleife wäre definitiv das mittel der wahl. Aber um mal einen weg zu zeigen, der deiner logik entspräche:
Delphi-Quellcode:
if (Value[1]=Value[2]) and (Value[1]=Value[3]) and (Value[2]=Value[3]) then
  Result:=true;
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.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 12:12
Zitat von emteg:
Zitat:
Result := (Value[1] = Value[2]) and (Value[2] = Value[3])
Wo hast du denn das her? Arbeitest du sonst mit ner anderen sprache? Also delphi ist das sicher nicht
Bevor man grosse Sprüche klopft mal lieber selber ausprobieren, nich?!

Er hat 2 logischer Vergleiche die einen boolsches Ergebnis liefern und das mit einem logischen UND verknüpft - was soll dabei nicht gehen?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 12:14
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 12:21
Zitat von emteg:
Delphi-Quellcode:
if (Value[1]=Value[2]) and (Value[1]=Value[3]) and (Value[2]=Value[3]) then
  Result:=true;
Wenn Value[1]=Value[2] und Value[1]=Value[3] ist, was läßt sich dann wohl über Value[2] und Value[3] sagen?

Gruß Hawkeye
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 12:26
Das müsste doch gehen, oder?
Delphi-Quellcode:
for Value in Array do
  Result:=Result and Value;
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 12:30
Nein. in geht nur bei Sets.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 12:33
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...
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Mehere Werte auf gleichheit überprüfen

  Alt 15. Apr 2006, 12:37
Zitat von 3_of_8:
Nein. in geht nur bei Sets.
Das geht auch bei Arrays (seit D2005), allerdings macht es für obige Aufgabe keinen Sinn, da wir hier Bytes vergleichen wollen. Mein Vorschlag:
Delphi-Quellcode:
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;
@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

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:05 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