AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Überprüfen, ob drei Vergleiche gleich sind

Überprüfen, ob drei Vergleiche gleich sind

Ein Thema von xZise · begonnen am 13. Aug 2009 · letzter Beitrag vom 13. Aug 2009
Antwort Antwort
Seite 2 von 2     12
Dax
(Gast)

n/a Beiträge
 
#11

Re: Überprüfen, ob drei Vergleiche gleich sind

  Alt 13. Aug 2009, 15:10
Um es schön in einer Zeiler zu halten, mit dem Wissen, dass Boolean = equivalent XNOR:not ((not ((S1 = '') xor (S2 = ''))) xor (S3 = ''))
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Überprüfen, ob drei Vergleiche gleich sind

  Alt 13. Aug 2009, 15:53
1. Später weiß bei sowas doch keiner mehr was der Programmierer da eigentlich wollte. (Dazu müsste man das bissl schon kommentieren)
2. Seh ich das richtig, das es falsch ist?
Wenn man alle 3 Strings voll übergibt, ergibt das xor ture wird negiert und false kommt raus.

Hier, eine funktionierende Variante mit nur einen Zugriff auf die Variablen:
Delphi-Quellcode:
function XZiseSeinVergleich(const S1, S2, S3: string): Boolean;
begin
  if Str1='then
  begin
    if Str2='then
      result := Str3=''
    else
      Result := false
  end
  else
  begin
    if Str2<>'then
      result := Str3<>''
    else
      Result := false
  end;
end;
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#13

Re: Überprüfen, ob drei Vergleiche gleich sind

  Alt 13. Aug 2009, 16:01
Hm, du hast Recht. Beim schreiben hatte ich nicht beacht, dass xor nicht so einfach auf n Operanden erweiterbar ist Letztlich kommt es wohl immer aufs selbe raus: in Delphi geht das nur mit mehreren Zugriffen, oder nur mit mehreren Zeilen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#14

Re: Überprüfen, ob drei Vergleiche gleich sind

  Alt 13. Aug 2009, 16:15
i hab's jetzt
Delphi-Quellcode:
if not (((S1 = '') xor (S2 = '')) or ((S1 = '') xor (S3 = ''))) then
// oder
if not (((S1 <> '') xor (S2 <> '')) or ((S1 <> '') xor (S3 <> ''))) then
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

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

Re: Überprüfen, ob drei Vergleiche gleich sind

  Alt 13. Aug 2009, 17:29
Zitat von himitsu:
da muß man aufpassen

True (die Konstante):
BOOL (c) = LongBool (delphi) = -1 = $FFFFFFFF
WordBool (delphi) = -1 = $FFFF
bool (c) = ByteBool (delphi): -1 = $FF
Boolean (Delphi): 1 = $01

True (bei booleanischen Vergleichen):
alles: b<>0

True (bei binärischen Vergleichen):
alles: b=Wert

darum ist auch b=True so fartal, da dort wirklich geprüft wird, ob b genau dem True entspricht

False (die Konstante und bei Vergleichen):
alles: b=0
Joar genau, aber rein theoretisch müsste das ja klappen Wenn auch nicht gerade sprachübergreifend sicher

Zitat von Dax:
Um es schön in einer Zeiler zu halten, mit dem Wissen, dass Boolean = equivalent XNOR:not ((not ((S1 = '') xor (S2 = ''))) xor (S3 = ''))
Aber das wird nicht funktionieren: Und zwar nimmst du nicht beim Vergleich zu S3 nicht mit rüber, wie S1/S2 aussahen: S1 und S2 != '' und S3 = '' -> True, da ja S1 und S2 = '' genau gleich sind beim innersten Vergleich.

Zitat von himitsu:
i hab's jetzt
Delphi-Quellcode:
if not (((S1 = '') xor (S2 = '')) or ((S1 = '') xor (S3 = ''))) then
// oder
if not (((S1 <> '') xor (S2 <> '')) or ((S1 <> '') xor (S3 <> ''))) then
Sieht interessant aus

Zitat von himitsu:
[...]also so Schlimm ist dann ein Vergleich via = oder &lt;&gt; garnicht
Nein aber das holen des Wertes dauert schon, wobei ich da mal wieder zu pingelig bin.

Und es hört sich so schön an:
Result := ((S1 = '') = (S2 = '') = (S3 = '')) Nun da ich eh die Werte zwischenspeichern "muss", werde ich himitsus letzte Variante nehmen.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#16

Re: Überprüfen, ob drei Vergleiche gleich sind

  Alt 13. Aug 2009, 18:30
Zitat von xZise:
Nein aber das holen des Wertes dauert schon, wobei ich da mal wieder zu pingelig bin.
ob man da nun einen String-Zeiger holt oder einen Boolean, macht keinen großen Unterschied
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

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

Re: Überprüfen, ob drei Vergleiche gleich sind

  Alt 13. Aug 2009, 18:46
Aus der Tabelle aber nicht mehr. (Imho)

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
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 19:33 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