Du bist nicht angemeldet.

Kontrollzentrum

Spenden

Jeder Euro hilft uns, euch zu helfen.

Adsense

Downloads

Stabil: 3.3.8.1 (Q, H)
Stabil: 3.3.12.0 (Q, H)
Beta: 3.3.11.5 (Q, H)
SciTE: 4/5/2014 (Q, H)
Hilfe Deutsch: 12/23/2013 (Q)
Download: OrganizeIncludes (Q)
Stand: 02.06.2014 - 2:21 Uhr

Lieber Besucher, herzlich willkommen bei: AutoIt.de - Das deutsche AutoIt-Forum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

  • »IsleOftechno« ist der Autor dieses Themas

Registrierungsdatum: 27. September 2006

Beruf: IT-Manager, Programmierer

  • Private Nachricht senden

1

Freitag, 1. Juni 2007, 00:10

Tipp zum Auslesen von Checkboxen

als ich in meinem aktuellen Programm mit

AutoIt-Quellcode

1
GUICtrlRead($TrayIconHide_checkbox)
eine checkbox ausgelesen habe, bekomme ich mit Haken eine 1 und ohne eine 4 zurück ...
da ich aber die werte in eine ini-datei speichern möchte und die 4 nur verwirrt, da an ihrer stelle eine 0 stehen soll (logisch: checkbox nicht angeklickt: also 0), habe ich überlegt, wie man das problem lösen kann ohne lange IF-Verzweigungen ...

Hier hilft uns reine mathematik:

Modulo ist eine mathematische Funktion, die den Rest aus der Division zweier ganzer Zahlen angibt, zum Beispiel:

5 Mod 2 = 1

so kann ich direkt arbeiten mit:

Mod(x,2)

habe ich die 1 so ergibt Mod(1,2) = 1 - die 1 bleibt uns erhalten

habe ich aber die 4, so ergibt Mod(4,2) =0 - hier bekomme ich meine gewünschte 0




Jetzt ein kleines Rätsel, auch wenn man keine 4 in die Checkbox "reinschreiben" kann, so möchte ich doch gucken, wer mir zuerst die mathematische Funktion liefert, die aus der 1 eine 1 macht und aus der 0 eine 4 ?!
Wenn das keiner schafft dann löse ich es auf ;)
google dich selbst ... :thumbsup:

bernd670

Moderator

Registrierungsdatum: 23. April 2006

Wohnort: 82362 Weilheim i. OB

  • Private Nachricht senden

2

Freitag, 1. Juni 2007, 07:06

RE: Tipp zum Auslesen von Checkboxen

Hallo!

Die Umrechnung kann z.B. so machen:
Mod((x + 1) * 4, 7)
MfG Bernd

I hacked 127.0.0.1 ->

Wie man Fragen richtig stellt
Fehlerberichte - wie Sie Softwarefehler melden sollten
Unter Netiquette versteht man das gute Benehmen in der virtuellen Kommunikaion.

  • »IsleOftechno« ist der Autor dieses Themas

Registrierungsdatum: 27. September 2006

Beruf: IT-Manager, Programmierer

  • Private Nachricht senden

3

Freitag, 1. Juni 2007, 07:17

RE: Tipp zum Auslesen von Checkboxen

supi, das ist richtig :)

ich hatte es ähnlich gelöst:



x ist unsere 0 oder 1:

x + (Mod(x+1,2)*4)


0 + (Mod(1,2)*4) = 0 + 4 = 4

1 + (Mod(2,2)*4) = 1 + 0 = 1
google dich selbst ... :thumbsup:

Xenobiologist

Xx_Mega_xX

Registrierungsdatum: 16. April 2006

Wohnort: Münster

Beruf: Wirtschaftsinformatiker

  • Private Nachricht senden

4

Freitag, 1. Juni 2007, 09:14

Hi,

was ist denn mit soetwas?

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <GUIConstants.au3>
GUICreate("My GUI Checkbox")
$1_CB = GUICtrlCreateCheckbox("AN", 10, 10, 120, 20)
GUICtrlSetState(-1, $GUI_CHECKED)
$2_CB = GUICtrlCreateCheckbox("AUS", 10, 30, 120, 20)
$start = GUICtrlCreateButton("Statuscheck", 10, 50, 100, 21)
GUISetState() 

While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    If $msg = $start Then
        ConsoleWrite(_getCheckboxState($1_CB) & @CRLF)
        ConsoleWrite(_getCheckboxState($2_CB) & @CRLF)
    EndIf
WEnd

Func _getCheckboxState($controlID)
    If GUICtrlRead($controlID) = $GUI_UNCHECKED Then Return 0
    If GUICtrlRead($controlID) = $GUI_CHECKED Then Return 1
    Return -1
EndFunc   ;==>_getCheckboxState


So long,

Mega

bernd670

Moderator

Registrierungsdatum: 23. April 2006

Wohnort: 82362 Weilheim i. OB

  • Private Nachricht senden

5

Freitag, 1. Juni 2007, 09:29

Oder noch etwas kürzer!

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <GUIConstants.au3>
GUICreate("My GUI Checkbox")
$1_CB = GUICtrlCreateCheckbox("AN", 10, 10, 120, 20)
GUICtrlSetState(-1, $GUI_CHECKED)
$2_CB = GUICtrlCreateCheckbox("AUS", 10, 30, 120, 20)
$start = GUICtrlCreateButton("Statuscheck", 10, 50, 100, 21)
GUISetState() 
 
While 1
    $msg = GUIGetMsg()
 
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    If $msg = $start Then
        ConsoleWrite(_getCheckboxState($1_CB) & @CRLF)
        ConsoleWrite(_getCheckboxState($2_CB) & @CRLF)
    EndIf
WEnd
 
Func _getCheckboxState($controlID)
    Return BitAND(GUICtrlRead($controlID),$GUI_CHECKED)
EndFunc   ;==>_getCheckboxState 
MfG Bernd

I hacked 127.0.0.1 ->

Wie man Fragen richtig stellt
Fehlerberichte - wie Sie Softwarefehler melden sollten
Unter Netiquette versteht man das gute Benehmen in der virtuellen Kommunikaion.

Xenobiologist

Xx_Mega_xX

Registrierungsdatum: 16. April 2006

Wohnort: Münster

Beruf: Wirtschaftsinformatiker

  • Private Nachricht senden

6

Freitag, 1. Juni 2007, 09:34

Hi,

so und jetzt würde gern wissen, warum das mit Mod gemcht werden sollte. :rofl:

So long,

Mega

P.S.: Mal sehen, ob es noch kürzer geht :-)

bernd670

Moderator

Registrierungsdatum: 23. April 2006

Wohnort: 82362 Weilheim i. OB

  • Private Nachricht senden

7

Freitag, 1. Juni 2007, 10:02

Ich hab das mit dem Mod mehr als kleines Rätsel verstanden!
MfG Bernd

I hacked 127.0.0.1 ->

Wie man Fragen richtig stellt
Fehlerberichte - wie Sie Softwarefehler melden sollten
Unter Netiquette versteht man das gute Benehmen in der virtuellen Kommunikaion.

Xenobiologist

Xx_Mega_xX

Registrierungsdatum: 16. April 2006

Wohnort: Münster

Beruf: Wirtschaftsinformatiker

  • Private Nachricht senden

8

Freitag, 1. Juni 2007, 10:57

Hi,

okay. So ganz ernst war meine Frage auch nicht gemeint. Vielleicht brauchen wir noch Ironie und Scherz Tags :-)

So long,

Mega

Registrierungsdatum: 17. März 2009

  • Private Nachricht senden

9

Dienstag, 17. März 2009, 20:55

Gehts auch so?

Also ich bin neu und habe nur wenig erfahrung mit autoit..
aber gehts nicht auch so?

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
;ich lasse das GuiCtrlCreat zeug ma weg nehmen wir an das $Checkbox1 die Variable der Checkbox ist.
;Genug geplappert Los gehts
$Checkbox2 = Guictrlread ($Checkbox1)
If $Checkbox2 = 4 Then
iniwrite ("Bla","bla","bla", 0)
Endif
If $Checkbox2 = 1 Then
 Iniwrite ("bla","Bla","Bla",1)
endif
 


Geht vieleicht auch mit elsif^^

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Nitrostar« (17. März 2009, 22:06)


BugFix

Der Bug Fixer

Registrierungsdatum: 17. Februar 2006

Wohnort: Sa.-Anhalt

  • Private Nachricht senden

10

Dienstag, 17. März 2009, 21:13

@Nitrostar:
*hust* - Hast du mal auf das Datum dieses Threads geguckt ? :rolleyes:

Zur Sache selber: Wie bereits erwähnt, die korrekte Abfrage erfolgt mit BitAnd.

Registrierungsdatum: 27. März 2009

  • Private Nachricht senden

11

Freitag, 27. März 2009, 18:01

ausserdem wäre die schönere mathematische funktion gewesen : (x-2)²

autoit.de Webutation