Tratsch rund um Autoit / Autoit Talk | kleinere Fragen

11/08/2012 14:32 Benjihz#631
Heey, ich möchte in meinem AutoItscript einen Teil von dem Source immer aktivieren oder deaktivieren. Das heist das ich in dem Script per Befehl(oder so) einen bestimmten teil deaktivieren kann und später wieder aktivieren und dann eine andere Funktion deaktiviere.
11/08/2012 15:47 Lawliet#632
If setzen?
11/08/2012 15:54 Benjihz#633
Hmm ich glaub ich heb es nicht gut erklärt.. Ich meine damit ich habe einen Klick Bot(da ich blutiger Anfänger bin) und bei dem Bot logge ich mich automatisch in ein Browsergame ein, ich will es so machen das ich eine Funktion habe im einen Grus in das Gildenforum automatisch schreiben kann, und z.B ein parr Sachen anpflanzen kann. Und da ich nicht weiß wie ich das trennen soll, wollte ich fragen wie ich verschiedene Sachen im Text deaktivieren könnte. Wenn das mit dem If die beste Möglichkeit wäre, wäre es nett wenn mir das jmd erklären könnte´da ich das nicht wirklich verstehe wie ich die Ifabfrage damit verbinden soll. Wie gesagt es is ein purer Klickbot & ganz ohne GUI. Sobald man den Bot startet legt er mit seiner Arbeit los!
11/08/2012 19:10 Lumi#634
Quote:
Originally Posted by mono0 View Post
Wie kann man bei einer Checkbox als Text ein & verwenden?
Ich denke mal, du meinst wie man eine Checkbox zum laufen bringt, bzw. mit Funktionen und so?

Code:
If GuiCtrlRead($Checkbox1) = $GUI_CHECKED Then

; Dein Code

Else

;Falls nicht, dann ...

EndIf
11/10/2012 18:26 mono0#635
Quote:
Originally Posted by Achat View Post
Scherzfrage?
Code:
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("&&&&&&&&&&&&&&&&&&&&&&&&&&&", 136, 152, 305, 97)
GUISetState(@SW_SHOW)
Geht sogar mit Koda :o

MfG
Es geht um ein einzelnes &. Und das verschwindet bei mir immer...also es steht einfach nix da. Alles andere funktioniert.
11/10/2012 19:01 -STORM-#636
Anführungszeichen vergessen?
Falls nein, poste mal dein Script.
11/10/2012 22:10 KDeluxe#637
Um ein "&" anzeigen zu lassen musst du zwei "&&" verwenden. Mit "A&B" wäre die Checkbox über "Alt + B" auswählbar.
11/13/2012 18:29 Achat#638
Wie lang dürfen $Variablen-Namen maximal sein?

MfG
11/13/2012 18:36 Lawliet#639
4095 Zeichen. Du musst aber auch bedenken, dass es Probleme mit Funktionen und der Performance geben kann.
11/14/2012 17:47 Achat#640
Wie kann man zuverlässig alle Kommentare in einem Autoit3-Sourcecode entfernen?

Ich habe hier schon was mit StringRegExp ausprobiert:
Code:
			ElseIf StringRegExp(StringStripWS($aSplit[$i], 8), '[\)|' & Chr(39) & '|"](;.*)', 0) Then ;[\)|'|"|\]](;.*) -> \s
				$aRegExp = StringRegExp($aSplit[$i], '[\)|' & Chr(39) & '|"]\s*(;.*)^["|'&Chr(39)&']', 1)
				If IsArray($aRegExp) And UBound($aRegExp) = 1 Then
				$aSplit[$i] = StringReplace($aSplit[$i], $aRegExp[0], '',0,1)
				ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $aRegExp = ' & $aRegExp[0] & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
				EndIf
			EndIf
$aSplit ist
Code:
StringSplit($sSource,Chr(13),2) ;jede Zeile des Sourcecodes.
und wird in einer for-Schleife abgearbeitet.

Es entfernt aber nicht alle Kommentare. Kennt sich jemand mit StringRegExp aus? Oder wäre eine andere Lösung besser?

MfG
11/14/2012 17:57 -STORM-#641
Wenn außer für Kommentare kein Semikolon vorkommt, ist das ziemlich leicht zu machen. Auch ohne RegEx.
Würde aber das Script zerstören, falls irgendwo eines in nem String, also zwischen Anführungszeichen, steht.
11/14/2012 18:02 Achat#642
Quote:
Originally Posted by -STORM- View Post
Würde aber das Script zerstören, falls irgendwo eines in nem String, also zwischen Anführungszeichen, steht.
Das ist das Problem.

Zum Beispiel in der StructureConstants.au3
Code:
Global Const $tagCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & _
		"int Indent;lparam Param"

Global Const $tagNMCOMBOBOXEX = $tagNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & _
		"int SelectedImage;int OverlayImage;int Indent;lparam Param"
Wenn dann ein Teil des Strings gelöscht wird, funktioniert es ja gar nicht mehr, weil dann u.a. das zweite Anführungszeichen fehlt.

MfG
11/14/2012 18:08 -STORM-#643
Du könntest die Anzahl der Anführungszeichen links vom Semikolon zählen, und nur den Teil danach löschen, falls die Anzahl gerade ist.

Falls die Anzahl ungerade ist, musst du ggf. nach nem zweiten Semikolon weiter rechts suchen und dafür wieder die Anzahl der Anführungszeichen links davon zählen usw.

Edit: Nicht vergessen, ' und " einzeln zu überprüfen, da ja eines der Zeichen in nem String stehen kann, der durch das andere angegeben wird.
11/14/2012 18:30 Achat#644
Quote:
Originally Posted by -STORM- View Post
Du könntest die Anzahl der Anführungszeichen links vom Semikolon zählen, und nur den Teil danach löschen, falls die Anzahl gerade ist.

Falls die Anzahl ungerade ist, musst du ggf. nach nem zweiten Semikolon weiter rechts suchen und dafür wieder die Anzahl der Anführungszeichen links davon zählen usw.

Edit: Nicht vergessen, ' und " einzeln zu überprüfen, da ja eines der Zeichen in nem String stehen kann, der durch das andere angegeben wird.
Code:
If $fVarForm And Not $sNewURL Then Return SetError(5, 0, "") ; "action" must have URL specified
"" oder '' können ja auch noch im Kommentar verwendet werden :(

Kann man das nicht irgendwie per RegExp lösen?

Der Autoit-Obfuscator schafft es ja auch irgendwie...
Code:
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/striponly
MfG
11/14/2012 19:11 Lawliet#645
Du kannst es dir ja am Obfuscator von Shadow abschauen ;)