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 2 von 5     12 34     Letzte »    
Popov
(Gast)

n/a Beiträge
 
#11

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 19:57
Nun mir erschließt sich das immer noch nicht.
Solange ich in Delphi arbeite ist True = 1

Was spricht also gegen die Prüfung von
if Foo = True then
welchen zustand kann ich denn solange ich in Delphi unterwegs bin noch erreichen als 1
Ich mag keine Dogmen. Das mit dem if Foo = True then Bann ist in etwa wie der Tipp der Mutti: Kind, es ist gerade der schönste Sonnenschein draußen, aber nimm trotzdem den Regenschirm mit, es könnte ja regnen.

Solange man NUR Pascal programmiert und keiner witzig ist und etwas manipuliert, sollte es keine Probleme geben.

Aber Boolean ist meiner Kenntnis nach mindestens ein Byte, so dass da mehr als nur zwei Zustände reinpassen. Und man weiß ja nie mit wem man kommuniziert und was der für True hält, z. B. 1 oder -1 oder 25.
  Mit Zitat antworten Zitat
BadenPower

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

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 20:09
Und tunlichst darauf verzichten halte ich für falsch, denn es gibt Situationen, in denen man direkt auf TRUE prüfen muss.
Elaborieren Sie.
Ganz einfach:

1 ist halt nicht TRUE.

Aber 1 und TRUE ergeben beide WAHR.


Einfach einmal eine Form mit 3Buttons anlegen und testen:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
   FVar: Variant;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

  if (FVar = true) then
   begin
    ShowMessage('True');
   end;
  if (FVar = 1) then
   begin
    ShowMessage('1');
   end;
  if (FVar) then
   begin
    ShowMessage('nur FVar');
   end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  FVar := true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  FVar := 1;
end;

end.
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
BadenPower

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

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 20:35
Solange ich in Delphi arbeite ist True = 1
True war noch niemals 1.

Seit ich mit Delphi und dies ist schon seit Version 1, arbeite war True immer True.

Einfach einmal testen:
Delphi-Quellcode:
Const
  Pruefen = 1;

procedure TForm1.Button1Click(Sender: TObject);
begin

  if (Pruefen) then
   begin
    ShowMessage('Hier komm ich niemals hin, da dieser Code nicht kompiliert wird');
   end;
end;
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
Popov
(Gast)

n/a Beiträge
 
#14

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 20:54
Delphi-Quellcode:
  ShowMessage('True = ' + BoolToStr(True));
  ShowMessage('False = ' + BoolToStr(False));
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:07
Wir haben hier viele gute und sachliche Argumente gehört - aber lasst doch die Erbsenzählerei sein.
Nicht jedes Wort gehört auf die Goldwaage.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:09
Wir haben hier viele gute und sachliche Argumente gehört - aber lasst doch die Erbsenzählerei sein.
Nicht jedes Wort gehört auf die Goldwaage.
Jo und ich denke es wurde alles gesagt was meine Frage bzgl. Kosmetik angeht..
Danke für die rege Beteiligung.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:13
False ist als 0 deklariert -> True ungleich 0.
Delphi verwendet hierfür 1, C ( also auch WinaAPI) -1 ( als binäres Komplement zu 0)
1 ist aber <> -1 -< True ist nicht gleich True.
Eigentlich dachte ich das in C die Definition von
Code:
FALSE = 0;
TRUE = !FALSE;
ist.
Auch wenn man (jedenfalls vor Zig Jahren auch in jeder zweiten .h-Unit auch ein TRUE = 1 (oder = -1) sieht1
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
BadenPower

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

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:20
Delphi-Quellcode:
  ShowMessage('True = ' + BoolToStr(True));
  ShowMessage('False = ' + BoolToStr(False));

BoolToStr gibt ja auch nur die Strings zurück, welche in der Funktion hinterlegt sind

Delphi-Quellcode:
function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;
const
  cSimpleBoolStrs: array [boolean] of String = ('0', '-1');
begin
  if UseBoolStrs then
  begin
    VerifyBoolStrArray;
    if B then
      Result := TrueBoolStrs[0]
    else
      Result := FalseBoolStrs[0];
  end
  else
    Result := cSimpleBoolStrs[B];
end;
Setzt man als 2. Parameter true kommt für
True nicht "-1" sondern "True"
und für False nicht "0" sondern "False"
zurück.
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 himitsu
himitsu

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

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:56
Solange ich in Delphi arbeite ist True = 1
True war noch niemals 1.

Seit ich mit Delphi und dies ist schon seit Version 1, arbeite war True immer True.

Einfach einmal testen:
Doch.
ShowMessage(IntToStr(Ord(True)));
Deine Argumentation ist halt falsch, auch wenn sie zur Hälfte betrachtet (nur von außen und nicht von innen) schon richtig aussehen mag.

Es hat niemand gesagt, daß True = 1 ist, so wie du es versuchst zu erklären.

Genauso kann ich keine Char oder Pointer mit einem Integer vergleichen.
Willst du also auch behaupten, daß ein Zeilenumbruch nicht 10 und/oder 13 ist?

Rate mal, warum ich in meinem Beispiel den nummerischen ordinalen Wert in einen Boolean gecastet hatte, anstatt Ihn einfach so zu versuchen zuzuweisen.
Boolean ist intern ein Byte, aber wie dieses Byte behandelt und ausgewertet wird, hängt vom Typ ab. (Byte, ShortInt, AnsiChar, Enum, Set usw.)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (30. Mär 2015 um 22:08 Uhr)
  Mit Zitat antworten Zitat
BadenPower

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

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 22:22
Im Zitat von EWeiss steht:
Zitat:
True = 1
und dies ist eben nicht richtig, denn laut Delphi, nachzulesen unter "Boolesche Typen" ist True eben nicht 1 sondern:
Zitat:
Ord(True) = 1
Und dies ist ein gewaltiger Unterschied, den ich mit einfachen Mittel belegt habe, in dem ich einfach einen Integerwert 1 in der If-Bedingung verwendet habe.

Klar, dass dies nicht funktionieren kann, aber es sollte eben verdeutlichen, dass True eben nicht 1 ist.

Bei anderen Boolschen Typen also nicht Boolean sondern ByteBool, WordBool oder LongBool ist Ord(True) auch nicht 1 sondern ungleich 0.
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
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 03:37 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