Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 02:25

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Checkboxen: False/True oder 0/1?

Discussion on Checkboxen: False/True oder 0/1? within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jul 2010
Posts: 2,073
Received Thanks: 601
Checkboxen: False/True oder 0/1?

Hey,

Ich hätte ne Frage zu den Koda Checkboxen.
Ich möchte, das wenn meine Checkbox aktiviert ist, eine 2. Funktion starten.

Muss ich dazu

PHP Code:
If $Checkbox1 True Then
Blaa 
oder

PHP Code:
If $Checkbox1 1 Then
Blaa 
machen?

Oder ganz was anderes:

PHP Code:
GUICtrlRead($Checkbox1,1) ; oder so ähnlich... 
?

Viele Grße,
Meroc
♥ .Meroc' ♥ is offline  
Old 09/12/2011, 16:30   #2
 
Ludder231's Avatar
 
elite*gold: 0
Join Date: Aug 2010
Posts: 880
Received Thanks: 113
du musst wenn du abfragen willst ob sie an oder aus ist: if guictrlread($checkbox1) = $GUI_CHECKED machen..
Ludder231 is offline  
Thanks
1 User
Old 09/12/2011, 16:37   #3
 
elite*gold: 0
Join Date: Mar 2011
Posts: 8,645
Received Thanks: 3,454
Quote:
Originally Posted by Ludder231 View Post
du musst wenn du abfragen willst ob sie an oder aus ist: if guictrlread($checkbox1) = $GUI_CHECKED machen..
Wenn er muss muss er auf klo.

Er kann auch mit "If $checkbox = 1 Then" abfragen
Freddy​ is offline  
Thanks
1 User
Old 09/12/2011, 16:41   #4
 
BlackHybrid's Avatar
 
elite*gold: 52
The Black Market: 101/0/0
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
Mach mal eine MsgBox und schreib True rein. Wird dir eine 1 ausgeben, weil True 1 ist.
BlackHybrid is offline  
Thanks
1 User
Old 09/12/2011, 16:46   #5
 
bollen's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 221
Received Thanks: 71
man kann auch mit
Code:
GUICtrlGetState ([COLOR=#0000bb][FONT=Courier New]$Checkbox1[/FONT][/COLOR] )
den status einer Checkbox abfragen als ergebnis erhälst du dann
Code:
$GUI_CHECKED oder
$GUI_UNCHECKED
bollen is offline  
Thanks
1 User
Old 09/12/2011, 17:01   #6
 
elite*gold: 0
Join Date: Jul 2010
Posts: 2,073
Received Thanks: 601
Danke, es hat funktioniert.
♥ .Meroc' ♥ is offline  
Old 09/12/2011, 21:07   #7
 
elite*gold: 0
Join Date: Feb 2010
Posts: 41
Received Thanks: 5
Quote:
Originally Posted by Merσc View Post
False/True oder 0/1
Das ist egal, da in AutoIt 0 gleich False und jede andere Zahl gleich True ist.
Spare dir die Überprüfung mit
PHP Code:
 If x=1 Then bla 
oder
PHP Code:
If x=True Then bla 
sondern schreib stattdessen einfach
PHP Code:
If x Then bla 
theboegl is offline  
Old 09/13/2011, 11:17   #8

 
FichteFoll's Avatar
 
elite*gold: 237
Join Date: Sep 2008
Posts: 4,476
Received Thanks: 4,587
Nun, es scheint hier wohl einige Missverständnisse zu geben. Dieser Beitrag ist ein bisschen länger geworden als eigentlich geplant, aber wer dies vorher noch nicht wusste, dem rate ich dringenst, sich das durchzulesen.

Zuerst einmal:
PHP Code:
If $checkbox1 True Then
oder
If $checkbox1 1 Then
oder
If $checkbox1 Then 
Das wird nicht richtig funktionieren. Warum?

Ein von GUICtrlCreate... zurückgegebener Wert ist ein Handle. Ein Handle repräsentiert einen Wert, der für interne Funktionen wichtig ist und ihnen deswegen auch übergeben werden muss, damit diese Funktionen wissen, mit welchem Element sie ihre Aktionen durchführen müssten, z.B. GUICtrlSetData. Für den Programmierer hat dieser Handle erstmal keinen sinnvollen wert, da er erstes bei jedem Ausführen wechseln kann und zweitens willkürlich ist. (Um genau zu sein handelt es sich hier um eine sogenannte Control-Id, welche wie ein Counter für jedes Steuerelement erhöht wird. Man könnte deswegen davon ausgehen, dass das zweite Element, das man in einem GUI erzeugt, eine Id haben wird, die um eins höher ist als die des Elements zuvor. Eine Abfrage auf diese Id ist jedoch in den seltensten Fällen angebracht, z.B. bei sehr vielen Controls.)
Eine Abfrage auf solch einen Wert würde also nicht dem abgehakten Status ensprechen sondern ein Vergleich mit dieser Id sein.
Dementsprechen würden also die erste und die letzte Abfrage immer True zurückliefern, falls das Element erfolgreich erstellt wurde.

PHP Code:
If GUICtrlRead($checkbox1Then
oder
If GUICtrlRead($checkbox1) = 1 Then 
ist allerdings ebenfalls falsch. Nicht aus demselben Grund, aber es kann irreführend sein - vor allem das erste Beispiel. Dieses wird immer True sein.

GUICtrlRead liefert nach Definition bei Checkboxen und Radiobuttons denselben Wert wie GUICtrlGetState.
Dieser Wert entspricht jedoch dem Status und besteht aus Bit-Flags. Eine Liste dieser Flags findet sich in der Hilfe. Darunter befinden sich unter $GUI_UNCHECKED (welcher 4 entspricht) und $GUI_CHECKED (bekanntlich 1) auch noch $GUI_HIDE oder $GUI_DISABLE usw. Wenn die Checkbox nicht selektiert ist, dann ist sie unselektiert und es würde (unter anderem) $GUI_UNCHECKED zurückgegeben werden, was ja auch ein Wert ungleich 0 ist.

Aber was ist ein Bitflag?
Wer programmiert, der sollte wissen, dass ein Computer oder generell ein technisches Gerät im Dualen System arbeitet. Er unterscheidet also zwischen zwei Werten: 1 und 0, oder auch An und Aus.
Auf diese Weise werden auch Variablen gespeichert. Demzufolge ergibt sich dann ein Wert wie 0010 0011 1101 0011 0011 1101 1001 0001b für einen 32-bit Integer (1 Bit = 1 Zeichen). Das b steht dabei für "binär".
Ein "Bitflag" nennt man es, wenn ein bestimmtes Bit dieser Variable auf 1 gesetzt wird. Zur Vereinfachung mal mit 4 Bit verdeutlicht:
0010b
Hier ist das 1. Bit gesetzt (0-basierend und rückwärts), dies ist also das 1. Bitflag.
Der Clou bei den Bitflags ist, dass man mehrere setzen kann. So könnte der Wert auch 0110b lauten und wir hätten 2 Bitflags gesetzt.

Wie arbeite ich damit?
Von der Funktion GUICtrlGetState oder auch GUICtrlRead erhalten wir nun also eine Variable, die verschiedene Bitflags enthalten kann. Wir müssen nun überprüfen, ob das entsprechende Flag für unseren Wert, den wir überprüfen möchten, gesetzt ist.
Dies funktioniert über BitAND, da diese Funktion Werte (in diesem Fall die Variable $GUI_CHECKED und den obigen Rückgabewert) miteinander vergleicht und nur die Bits setzt, die bei beiden (bzw. allen, wenn es mehrere Werte sind) Werten gesetzt sind.

Beispiel:
Der Rückgabewert von GUICtrlRead($checkbox1) beträgt 0111b, $GUI_CHECKED beträgt 1 bzw. 0001b.

Code:
       [COLOR="DarkOrange"]0[/COLOR][COLOR="DarkRed"]11[/COLOR][COLOR="Green"]1[/COLOR]b
       [COLOR="DarkOrange"]000[/COLOR][COLOR="Green"]1[/COLOR]b
[COLOR="Blue"][B]BitAnd[/B][/COLOR] -----
       [COLOR="DarkOrange"]000[/COLOR][COLOR="Green"]1[/COLOR]b
Es bleibt also eine Zahl übrig, nämlich der Wert des Flags, das unsere Variable definiert, welcher diesem Fall 1 ist. Und dann reicht eine einfache Abfrage, ob dieser Wert ungleich 0 ist.

Was bedeutet das nun?
Eine korrekte Abfrage, bei der man sicher sein kann, dass die Checkbox auch wirklich selektiert ist, sähe so aus:
PHP Code:
If BitAND(GUICtrlRead($checkbox1), $GUI_CHECKEDThen 
Man findet auch oftmals die noch genauere Methode
PHP Code:
If BitAND(GUICtrlRead($checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then 
, was allerdings unnötig ist - zumindest, wenn es sich um reine Bitflags handelt. Sollte die Variable $GUI_CHECKED aus mehreren gesetzten Bits bestehen, so würde das erste Beispiel auch "True" sein, wenn nur eines der benötigten Bits gesetzt ist. Bei der zweiten Variante wird anschließend noch überprüft, ob der Wert genau $GUI_CHECKED entspricht.


Das war es eigentlich, was die Sache mit GUICtrlRead, Checkboxen, $GUI_CHECKED und diesen merkwürdigen Bitflags angeht. Ich hoffe, dass dies dem ein oder anderen weiterhilft und er vielleicht endlich den Ursprung seines Fehlers findet, den er einfach zum Erbrechen nicht finden konnte.
Sollte etwas von den Informationen falsch sein, so tut mir das leid, allerdings glaube ich das nicht und wäre wirklich sehr verwundert. Einfach melden, dann werde ich es korrigieren.
FichteFoll is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
this is true or false???
04/27/2011 - 9Dragons - 10 Replies
hi i was watching videos in youtube for hacks to 9dragons ^^ and saw this video http://www.youtube.com/watch?v=SITYGtf23a0 but dont know if is true or false but i was download and dont know how driver if any know help me becouse if is true in nice it's for 9d G1 thnx Sorry for my bad english ^^
NOT FALSE, TRUE!
06/24/2010 - SRO Private Server - 9 Replies
scammed me once, scammed me twice - sure she wont stop. Proxy \ pr0xy, where ever you see her, in the forum \ sunworld2 \ mysro, be aware! she pretends to be your friend, makes you trust her, and then "oops, some1 scammed me! pls gimme 600m for potions".. ohh she looks nice, why dont I help her? SO DONT! for 3 months ive been asking her for my gold, and everytime she has a diffrent reason.. "I got scammed" \ "I got hacked" \ "My dog has eat my gold" or diffrent bullshit her MSN is...
TRUE OR FALSE?
12/11/2009 - Soldier Front Hacks, Bots, Cheats & Exploits - 7 Replies
Once a Cheater, Always a Cheater?
Is it true or false.
11/04/2008 - Dekaron - 16 Replies
Is it true that if we get insane EXP we get autobanned?
why,why?True or false?
11/17/2007 - Conquer Online 2 - 5 Replies
:rolleyes:erm....It is not fun to play without bots., i dunno why .. If the best of the forums is the best way to learn how to play, and do climb with bots,For me this was the best forum is not that of a date and time wing is not the same,I expect something to happen here to be the same again, as I hope it will be the best again,This does not mean that it is not only good that it is no longer the best,Apparently the Chinese have the best hacks and the best forums this is very demeaning ......



All times are GMT +2. The time now is 02:25.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.