Autor Beitrag
Snippy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: So 19.01.03 20:40 
HI!
Ich möchte gerne das eine Aktion ausgeführt wird, wenn in bestimmtes Radiobutton gedrückt ist!
Aber mit "if radiobutton1.checked := true then
begin" funzt das nicht! Dann kommt immer : Type of expression must be Boolean"

Wie kann ich das anders machen???

THX

_________________
Carpe Diem!
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 19.01.03 20:51 
Snippy hat folgendes geschrieben:
HI!
if radiobutton1.checked := true then

ausblenden Quelltext
1:
if radiobutton1.checked = true then					

= statt := , du willst ja keine Zuweisung

mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: So 19.01.03 20:52 
Mit := weist du einer Variable einen Wert zu und machst keinen Vergleich.
ausblenden Quelltext
1:
If RadioBox1.Checked = true then					
torstenheinze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 461



BeitragVerfasst: So 19.01.03 21:14 
damit erkennst du ob es markiert ist:
ausblenden Quelltext
1:
If RadioBox1.Checked then					

damit erkennst du ob es nicht markiert ist:
ausblenden Quelltext
1:
If not (RadioBox1.Checked) then					

:wink:

Moderiert von user profile iconTino: Code-Tags hinzugefügt.
Snippy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: So 19.01.03 21:14 
Argh!
Auf welche Ideen Noobs wie ich doch immer kommen!
:D
Vielen Dank!

_________________
Carpe Diem!
torstenheinze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 461



BeitragVerfasst: So 19.01.03 21:16 
ich glaube aber nicht, das dieser befehl funktioniert
ausblenden Quelltext
1:
If RadioBox1.Checked = true then					

denn bei einer checkbox funktioniert er nicht, denn man mus das mit
ausblenden Quelltext
1:
If not (RadioBox1.Checked) then					

oder
ausblenden Quelltext
1:
If (RadioBox1.Checked) then					

machen.

Moderiert von user profile iconTino: Code-Tags hinzugefügt.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 19.01.03 21:24 
@torstenheinze: entschuldige die harten Worte, aber das ist Unsinn. Selbstverständlich funktioniert die Abfrage:
ausblenden Quelltext
1:
RadioBox1.Checked = true					

Sowohl bei einem RadioButton als auch bei einer Checkbox. Was man beim Namen "RadioBox" wohl dazu sagen soll, denn ich weiß nicht, was von beidem das sein soll.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
torstenheinze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 461



BeitragVerfasst: So 19.01.03 21:35 
is ja ok, aber bei mir gab es da manchmal fehler, darum verwende ich immer die die icjh geschrieben hab.
als ich das alserstes mal versucht hab (deine methode) da gab es ein fehler und ich hab mich auch höllisch gewundert, aber egal, es futzen beide, um so besser
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 19.01.03 22:15 
Sorry nochmal. Bin heute nicht so gut drauf ... :beer: ?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: So 19.01.03 22:55 
Hallo,

die Abfrage if (RadioButton1.Checked=true) then kann man sich schenken.

if RadioButton1.Checked then tut das gleiche.

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
torstenheinze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 461



BeitragVerfasst: So 19.01.03 22:58 
Ok, Peter Lustig
:beer:
FR399Y
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 27.01.03 20:18 
Zitat:
If not (RadioBox1.Checked) then


funktioniert das auch bei nem text edit oder spin edit ?
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 27.01.03 20:37 
FR399Y hat folgendes geschrieben:
funktioniert das auch bei nem text edit oder spin edit ?

Nur bei Variablen / Eingeschaften die ein Boolean Wert zurückgeben.

Gruß
TINO
FR399Y
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 27.01.03 21:12 
ok haette ich mir auch denken können :wink:

aber wie macht man das den?
mit ner if-then abfrage ist doof da dann ja der anfangs wert ausgegrenzt werden muss ..
zb 0 aber mit dieser kann man ja auch was machen
und nen leer zeichen sagt er ja gleitkomma fehler...

wie ist der befehl ne veränderung in nem text oder spin edit zu testen bzw. zu erfassen?
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mo 27.01.03 22:26 
Peter Lustig hat folgendes geschrieben:
@torstenheinze: entschuldige die harten Worte, aber das ist Unsinn. Selbstverständlich funktioniert die Abfrage:
ausblenden Quelltext
1:
RadioBox1.Checked = true					

Es ist nicht gewiss, ob sie funktioniert. Wenn man nur mit Delphi-Funktionen und Komponenten arbeitet dürfte es bei der Gleichsetzung mit True zu keinerlei Probleme führen. Nutzt man hingegen API Funktionen, so kann das Ganze nach hinten los gehen. Das hat folgenden Grund:

In Delphi gilt:
ausblenden Quelltext
1:
2:
False = Boolean(0)
True = Boolean(1)


In der Theorie gilt jedoch:
ausblenden Quelltext
1:
2:
False = Boolean(0)
True <> Boolean(0)



Wenn nun eine API-Funktion einen Wert ungleich 0 zurückliefert und in der Delphi Import-Deklaration mit Boolean als Rückgabewert gearbeitet wird, so kann es vorkommen, dass nicht unbedingt Boolean(1) zurückgeliefert werden muss.
Was passiert, wenn eine Funktion z.B. Boolean(10) zurückliefert, und man diesen Wert dann mit True gleich setzt, kann man sich denken:
ausblenden Quelltext
1:
2:
3:
4:
5:
var b: Boolean;
begin
  b := APIFunktion('irgendwas');
  if b = True then ...
end;


Das ganze wird während des Programmsablaufs dann so aussehen:
ausblenden Quelltext
1:
if Boolean(10) = Boolean(1) then ...					

Wie man sieht, wird diese Bedingung nie Wahr.

Schreibt man hingegen die verkürzte Form ohne die Gleichsetzung, so macht der Compiler eine Abfrage nach ungleich Boolean(0) daraus und die Bedingung wird Wahr.
if b then ...wird zu
ausblenden Quelltext
1:
if Boolean(10) <> Boolean(0) then ...					



Auf der sicheren Seite ist man also, wenn man
if b then und if not b then schreibt.

_________________
Ist Zeit wirklich Geld?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 27.01.03 22:40 
Vorneweg: da ich mich auf eine Checkbox / einen Radiobutton bezog, erscheint mir die ganze Abhandlung ziemlich am Thema vorbei.


Nun zum eigentlichen:

Soweit ich weiß, ist auch in der Theorie ein Boolean eine 1bit-Variable. Etwas anderes macht absolut keinen Sinn. Boolean ist nunmal ein Wahrheitswert.
Damit kann Boolean aber nur 1 oder 0 sein, also True oder False. Wie kommen denn da noch irgendwelche 10 oder so rein? Das erscheint mir sehr unlogisch. Eine Variable, die einen Wert größer als 1bit speichert, ist kein Boolean, sondern irgendetwas anderes.

Oder habe ich komplett falsch verstanden, was Du meintest?

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mo 27.01.03 22:47 
Was ich meine ist, dass SizeOf(Boolean) = 1 ergibt. Also Boolean = Byte. Und ein Byte kann nunmal mehr als 2 Werte aufnehmen, was zu dem obigen Problem führt.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function MyFunc: Integer; stdcall;
begin
  if Fehler then Result := 0
  else if OK1 then Result := 1
  else if OK2 then Result := 2;
end;


function MyFunc: Boolean; stdcall; external 'MyDll.dll';

Genau so wird mit vielen WinAPI Funktionen verfahren, bei denen es eigentlich nur darum geht, ob sie 0 oder <>0 liefern.

_________________
Ist Zeit wirklich Geld?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 27.01.03 22:57 
Hi!

Jetzt verstehe ich, was Du meinst. Allerdings glaube ich, dass das (sehr interessante) Problem bereits gelöst wurde:

Delphi-Hilfe hat folgendes geschrieben:
A value of type ByteBool, LongBool, or WordBool is considered True when its ordinality is nonzero. If such a value appears in a context where a Boolean is expected, the compiler automatically converts any value of nonzero ordinality to True.


MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 28.01.03 01:04 
FR399Y hat folgendes geschrieben:
aber wie macht man das den?
mit ner if-then abfrage ist doof da dann ja der anfangs wert ausgegrenzt werden muss ..
zb 0 aber mit dieser kann man ja auch was machen
und nen leer zeichen sagt er ja gleitkomma fehler...

wie ist der befehl ne veränderung in nem text oder spin edit zu testen bzw. zu erfassen?

Sorry, aber ich verstehe nicht was Du meinst!

Gruß
TINO