AGB  ·  Datenschutz  ·  Impressum  







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

Welche CheckBox-Komponente?!?

Ein Thema von Daniel B · begonnen am 29. Nov 2002 · letzter Beitrag vom 3. Jan 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#11
  Alt 29. Nov 2002, 15:03
Zitat von sakura:
Ausnahme: UNIX Shell Scripting: False ist ungleich Null (0) und True ist als Null (0) definiert.
Das liegt wahrscheinlich daran, dass ein Programm mit dem Exit-Code 0 erfolgreich war und mit einem Exitcode > 0 nicht erfolgreich...

[edit]Genauer gesagt, true und false sind Executables (liegen normalerweise in /bin/), die einen Exitcode von 0 bzw. 1 zurückgeben.[/edit]

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#12
  Alt 29. Nov 2002, 15:23
Sorry: True ist gleich 1

Der Rest bleibt aber weiter wie beschrieben. Hier mal ein Beispiel:
Delphi-Quellcode:
  // der Wert der Konstante True
  ShowMessage('TRUE: ' + IntToStr(Integer(True)));
  // der Wert der Konstante True
  ShowMessage('FALSE: ' + IntToStr(Integer(False)));
  // ein Vergleich zweier gleicher Konstanten
  ShowMessage('2=2: ' + IntToStr(Integer(Boolean(2 = 2))));
  // ein Vergleich zweier verschiedener Konstanten
  ShowMessage('1=2: ' + IntToStr(Integer(Boolean(1 = 2))));
  // testen einer Konstante ungleich 0
  if Boolean(5) then ShowMessage('Boolean(5) GILT ALS True') else ShowMessage('Boolean(5) GILT ALS False');
  // testen einer Konstante gleich 0
  if Boolean(0) then ShowMessage('Boolean(0) GILT ALS True') else ShowMessage('Boolean(0) GILT ALS False');
  // testen ob eine Konstante (5), welche True is, auch gleich True ist
  if Boolean(5) = True then ShowMessage('Boolean(5) = True IST WAHR') else ShowMessage('Boolean(5) = True IST NICHT WAHR');
  // testen ob eine Konstante (5), welche True is, gleich False ist
  if Boolean(5) = False then ShowMessage('Boolean(5) = False IST WAHR') else ShowMessage('Boolean(5) = False IST NICHT WAHR');
  // testen ob eine Konstante (0), welche False is, gleich True ist
  if Boolean(0) = True then ShowMessage('Boolean(0) = True IST WAHR') else ShowMessage('Boolean(0) = True IST NICHT WAHR');
  // testen ob eine Konstante (0), welche False is, auch gleich False ist
  if Boolean(0) = False then ShowMessage('Boolean(0) = False IST WAHR') else ShowMessage('Boolean(0) = False IST NICHT WAHR');
Das sollte alles erklären.
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
[Flox]Cauchy

Registriert seit: 25. Dez 2002
Ort: Wiesbaden
13 Beiträge
 
Delphi 5 Enterprise
 
#13
  Alt 2. Jan 2003, 21:05
"True" war übrigens auch schon in Pascal gleich "1". Dies zeigt das folgende kleine Programm:
Code:
uses Crt;
var
  x: Boolean;
  y: Byte absolute x;
begin
  ClrScr;
  x := False;
  WriteLn('False = ', y);
  x := True;
  WriteLn(' True = ', y);
  WriteLn;
  for y := 0 to 255 do
    Write(x:5);
  ReadLn;
end.
In den ersten beiden Zeilen wird "False = 0" und "True = 1" ausgegeben. Danach folgen dann ein "False" und 255 "True".
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#14
  Alt 2. Jan 2003, 22:19
Hallo!

Meine Delphi-Hilfe sagt:
Boolean: False = 0, True = 1
ByteBool, WordBool, Longbool: False = 0, True <> 0

Boolean ist Pascal, 1 Byte. Der Rest (1/2/4 Byte) ist aus Kompatibilität zu anderen Sprachen bzw. der Windows-API vorhanden. Die liefert bei einer bool-Prozedur 0 oder <> 0!

Allerdings programmieren die auch mit der Beißzange:
Delphi-Quellcode:
var OK : Boolean;
...
if x <> 0 then OK := True;
if OK then ...
1. ist OK nicht initialisiert und
2. geht das ganz einfach:
OK := x <> 0; Was soll übrigens
Zitat von sakura:
Delphi-Quellcode:
procedure TAboutBox.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
  begin
    ShowMessage('Ein');
  end
  else if not CheckBox1.Checked then
  begin
    ShowMessage('Aus');
  end;
end;
bedeuten?

das if nach dem else ist doch überflüssig! Es reicht doch
Delphi-Quellcode:
procedure TAboutBox.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
    ShowMessage('Ein') else
    ShowMessage('Aus');

end;
Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#15
  Alt 2. Jan 2003, 23:21
Ich gebe zu, das Beispiel war nicht gut, es sollte jedoch folgenden Konstrukten negieren.
Delphi-Quellcode:
procedure TAboutBox.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked = True then
  begin
    ShowMessage('Ein');
  end
  else if CheckBox1.Checked = False then
  begin
    ShowMessage('Aus');
  end;
end;
Ich selbst programmiere sonst auch in Deiner Manier, das Beispiel ging wohl etwas daneben
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#16
  Alt 2. Jan 2003, 23:26
Also: nie Booleans miteinander vergleichen, sonder nur:

if "boolean" then ... Aber was ist mit der Menge begin und ends? Machen die auch was schlimmes?
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#17
  Alt 2. Jan 2003, 23:36
Hallo!

Zitat von Nailor:
Aber was ist mit der Menge begin und ends? Machen die auch was schlimmes?
Natürlich nicht, ist nur mehr Schreibaufwand. Meine Kritik betraf ja das doppelte IF!
Delphi-Quellcode:
if a then
  .. else
if not a then
  ..
Wenn a eine Variable ist, die nicht von asynchronen Prozessen (OnKeyPressed, OnTimer etc.) verändert wird, bleibt a dasselbe.
Ändert ein asynchroner Prozess die Variable a, wird u.U. beides NICHT durchlaufen!

Ist a eine Funktion, wird sie zweimal ausgeführt! Wenn die fragt, ob man das Programm wirklich beenden will, kommt die Frage bei "Nein" 2 mal!

Was den Schreibaufwand betrifft: Informatiker sind so faul, daß sie lieber 2 Tage an einem Programm scheiben, als 2 Minuten zu arbeiten!

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#18
  Alt 2. Jan 2003, 23:36
Zitat von Nailor:
Aber was ist mit der Menge begin und ends? Machen die auch was schlimmes?
Das ist das gleiche Thema wie mit dem Semikolon;
Es ist übersichtlicher/schöner;
Sobald Du eine zweite Zeile dazu schreibst, fällt man genauso aus die "Nase", wie mit dem fehlenden Semikolon;

Auch hier meine Meinung, immer hinschrieben auch wenn nud ein Exit; dazwischen steht;

Grüsse, Daniel
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#19
  Alt 3. Jan 2003, 00:09
Problem kann hier besonders auch sein, dass man nicht drauf hingewiesen wird als
Code:
[Error] Unit1.pas(28): Missing operator or semicolon
Hat man zb einen Befehl nach einem if, und fügt einen dazu ohne mit begin end; nachzurüsten kann das schon nervraubende Folgen haben.

Gruß, Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04:55 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