AGB  ·  Datenschutz  ·  Impressum  







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

TRUE/FALSE Part

Ein Thema von EWeiss · begonnen am 30. Mär 2015 · letzter Beitrag vom 2. Apr 2015
Antwort Antwort
Seite 1 von 2  1 2      
Popov
(Gast)

n/a Beiträge
 
#1

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 22:10
False ist nicht 0 sondern
Code:
Ord(False) = 0
Der Wert von False ist 0. Es ist egal ob Ord('A') 65 ergibt, das Byte von A hat den Wert 65.

Byte(False)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#2

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 22:20
False ist nicht 0 sondern
Code:
Ord(False) = 0
Der Wert von False ist 0. Es ist egal ob Ord('A') 65 ergibt, das Byte von A hat den Wert 65.

Byte(False)
Merkst Du was?
Du hast mich doch gerade bestätigt.

Der 'Ordinalwert von False ist 0' und nicht 'False ist 0'.
Denn "A" ist ja auch nicht 65, aber der Ordinalwert.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: TRUE/FALSE Part

  Alt 31. Mär 2015, 07:47
Ich habe keine Ahnung davon, sondern probiere aus:

Code:
A:=0. b := Bool(A) := FALSE. b1=true? FALSE b1=false? TRUE
A:=1. b := Bool(A) := TRUE. b1=true? TRUE b1=false? FALSE
A:=2. b := Bool(A) := TRUE. b1=true? FALSE b1=false? FALSE
A:=3. b := Bool(A) := TRUE. b1=true? FALSE b1=false? FALSE
A:=FF. b := Bool(A) := TRUE. b1=true? FALSE b1=false? FALSE
Also... ähm. Bool(0) = false, alles andere ist true.... Aber dann... gilt manchmal eben auch: true <> true. Boolean(2) ist z.B. so ein Fall, aber eben auch Boolean(255).

Weswegen es -alter Hut- wirklich bescheuertnicht zu empfehlen ist, eine bool'schen Wert auf =TRUE abzufragen. Denn, wie auch schon 1024x erwähnt, gibt es durchaus Routinen (API), die eben nicht nur 0 und 1 liefern, sondern z.B. -1 (also FF). Und daher sollte man eben nur 'If Resultat then' schreiben, denn das klappt auch bei Bool(255).

Ein Variant ist übrigens kein bool'scher Wert und wenn ich einen Variant auf einen Bool'schen Wert abfragen will, dann konvertiere ich vorher sicher, denn ansonsten knallt mir der Vergleich irgendwann um die Ohren (wenn der Variant z.B. ein Array beinhaltet). Und wenn ich schon sicher konvertiere, kann ich mir die Abfrage auf '=True' auch sparen.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: TRUE/FALSE Part

  Alt 1. Apr 2015, 23:14
Es ist unter C auch nicht ganz unüblich, den Erfolg einer Instanzerstellung so zu prüfen:
Code:
MyClass mc = NULL;
mc = New(MyClass);
if !(mc)
  MessageBox("Mööp!");
else
  DoSomethingWithMC(mc);
Dabei wird genutzt, dass NULL in C == 0 ist, was wiederum == false ist. Und da C nicht typsicher ist, geht diese Abomination. Wie aber true genau definiert ist, hängt überall von der konkreten Implementierung ab. Die einzige in allen Sprachen konstante Weisheit ist: false = 0
True kann alles andere was nicht 0 ist sein wenn man jetzt mal die beinhaltende Variable binär betrachtet und als Zahl interpretiert. Ob 1, -1 oder !0 (das binäre Ergebnis hängt vom hinter dem Bool stehenden Typen ab, also wie lang er ist, ob er mit Vorzeichen definiert ist oder nicht usw.) - das sind die üblichen Vertreter. Aber prinzipiell sind alle Binärwerte verschieden von 0 als true möglich. Egal ob Ord(irgendwas) nun irgendwasanderes ist oder nicht.

Wenn man für alle Fälle und immer sicher sein will, prüft man stets nur auf false, und schreibt alles was im true-Fall passieren soll in den else-Zweig. Dann wäre man immer auf der super-sonder-sicheren Seite. Ein einfaches Weglassen von =true oder =false hat bei mir bisher aber auch in Fällen der Zusammenarbeit mit C und APIs immer zum richtigen Ergebnis geführt. Entweder Glück, oder Delphi tut da relativ sinnvolle Dinge im Hintergrund. Oder ich habe bisher keine allzu bösartigen DLLs in der Hand gehabt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium ( 1. Apr 2015 um 23:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.379 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TRUE/FALSE Part

  Alt 2. Apr 2015, 00:47
Von allem Technischen mal abgesehen, das ja schon zur Genüge erörtert wurde... niemand würde sagen:
Wenn "das Wetter ist schön" wahr ist, werde ich Fußball spielen gehen.

Die meisten würden wohl eher sagen:
Wenn das Wetter schön ist, werde ich Fußball spielen gehen.

Warum sollte man beim Programmieren auf die Idee kommen das anders zu machen?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: TRUE/FALSE Part

  Alt 2. Apr 2015, 00:59
Jajn. In Delphi ist es so üblich. Ich weiß nicht ob es auch schon typisch Pascal war. Aber es war nicht typisch Visual Basic. So wurde ich in eine Firma gebeten meine Codes in Delphi so zu schreiben, dass auch VB-Kollegen es verstehen würden. Und mit IF DasWetterSchoen THEN konnten sie nichts anfangen. Das war für sie unlogisch und einig glaubten, das ich den Code bewußt unleserlich schreibe. Einige dachten, dass ich scherze. Ich sollte letztendlich den Code dann so schreiben: IF DasWetterSchoen = TRUE THEN , denn dass haben alle verstanden.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#7

AW: TRUE/FALSE Part

  Alt 2. Apr 2015, 01:34
Ich kenne keine moderne Programmiersprache wo es üblich wäre, Vergleiche mit booleschen Werten zu machen. Vielleicht waren die VB-Leute in dem Schuppen einfach nur verschroben.
Edit/nevermind: Ich hab gefunden, das solche Vergleiche sogar mit in der MS-VB-Doku zu finden sind

Knobelaufgabe: Welchen Typ hat !!((!!a)-1) in C++, wenn a ein Integer ist. Wie kann man das kürzer/klarer schreiben?
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#8

AW: TRUE/FALSE Part

  Alt 2. Apr 2015, 09:04
Die einzige in allen Sprachen konstante Weisheit ist: false = 0
Ich bleibe bei meiner Meinung, dass dies sprachlich nicht richtig ist.

Wenn "false = 0" stimmen würde, dann wäre dies möglich:
Delphi-Quellcode:
 if (false = 0) then
  begin
   ShowMessage('False ist 0');
  end;
Und ich glaube an die Macht des Debuggers, der mir bestätigt, das "False" eben nicht 0 ist.


Und schauen wir doch einfach einmal was Delphi persönlich sagt:
Code:
False = False
siehe Bild im Anhang.
Angehängte Grafiken
Dateityp: jpg False_ist_False.jpg (43,2 KB, 32x aufgerufen)
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: TRUE/FALSE Part

  Alt 2. Apr 2015, 09:11
Okay BadenPower:

Delphi-Quellcode:
var
  B: Boolean;
begin
  B := false;
end;
Was steht jetzt für B im Speicher?

00000000

oder

000false

? (Kleiner Tipp: Ein Bit kann nur den Zustand 1 oder 0 annehmen)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#10

AW: TRUE/FALSE Part

  Alt 2. Apr 2015, 09:17
(Kleiner Tipp: Ein Bit kann nur den Zustand 1 oder 0 annehmen)
Ein String besteht auch nur aus 0 und 1.

Und einer Bitfolge siehst Du halt nicht an, was es letztendlich darstellen soll.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower ( 2. Apr 2015 um 09:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:22 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