Beiträge von FireFlyer
-
-
Ach lol -.-
hab das mit dem Switch übersehn... dachte es wäre ausserhalbDanke Raupi
-
Wieso machst dus nich einfach so:
Spoiler anzeigen
[autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitCase $OK
[/autoit] [autoit][/autoit] [autoit]
If $titel_INPUT = "" Then
MsgBox( 0, "Angaben Fehlen!", "Es fehlt ein Titel!")
Else
_funktion()
EndIfEndswitch
[/autoit]
wend -
Ähhm in diesem Fall ja^^
Bin davon ausgegangen das ein Monat auch ab und zu mal 31 Tage hat... hab ich mal gehörtIst aber wohl ein genormter Dienstplan mit nur 30 Tagen ja?
-
Also ein Array ist ein reservierter Platz im Speicher. Nimm das jetzt einfach mal so hin^^
Stell dir das Array als Liste vor.
Mit Dim machst du diesen Platz im Speicher quasi frei.Ein Array fängt immer bei 0 (dieser Wert nennt sich Index) an. Um ein Array mit einem Element zu deklarieren musst du aber immer die größe angeben d.h. +1
[autoit]
Also wenn duDim $array[1]
[/autoit]machst kannst du nur $array[0] verwenden.
Wenn du nun also irgendwo in deinem Script $array[1] = "blabla" machst wird das Script abstürzen.*Einschub*
Mit der Funktion Ubound erhältst du die größe des Arrays zurück in unserm Fall ist die größe also einfach nur 1Also erstellen wir mal ein Array für 5 Elemente.
[autoit]Dim $array[5]
[/autoit]
[autoit]
Wieso jetzt doch nur 5, müssen es nicht 6 sein?
Nein, denn wir können ja bei 0 anfangen.$array[0] = "1"
[/autoit]
$array[1] = "2"
$array[2] = "3"
$array[3] = "4"
$array[4] = "5"Nun erweitern wir das Array um eine Dimension das sieht im Code beim deklarieren so aus:
Dim $array[1][1]Stelle dir ein solches array als Tabelle vor. Also mit Zeilen & Spalten.
Es gelten die gleichen Regeln wie für ein eindimensionales Array.Das oben deklarierte Array ist zugegebener Maßen ziemlich sinnlos also erstellen wir als Beispiel ein neues:
[autoit]Dim $array[3][2] ;Ein Array mit 3 Zeilen und 2 Spalten
[/autoit][autoit][/autoit][autoit]
$array[0][0] = "Zeile 1 Spalte 1"
$array[0][1] = "Zeile 1 Spalte 2"$array[1][0] = "Zeile 2 Spalte 1"
[/autoit][autoit][/autoit][autoit]
$array[1][1] = "Zeile 2 Spalte 2"$array[2][0] = "Zeile 3 Spalte 1"
[/autoit]
$array[2][1] = "Zeile 3 Spalte 2"Man kann das Array auch auf noch mehr Dimensionen erweitern, dies ist jedoch nur bedingt sinnvoll und wird auch dann schwierig zu verstehen
3 Dimensionen ($array[1][1][1]) gleich Würfel also nicht nur nach unten bzw. nach rechts sondern auch noch nach hinten erweiterbar.
Man braucht es eher selten.Der Vorteil eines Arrays liegt natürlich klar auf der Hand.
[autoit]
Mit einer Schleife lassen sich so sehr leicht informationen ändern. Zum beispiel:;Deklaration des Arrays und mit Werten "füttern"
[/autoit][autoit][/autoit][autoit]
Dim $array[3]
$array[0] = 2
$array[1] = 4
$array[2] = 20;Per Schleife alle Werte +5 rechnen
[/autoit]
For $i = 0 To Ubound($array)-1 ;Ubound gibt den Wert 3 zurück. Wenn nun aber $i = 3 werden würde, würde unser Script abstürzen; Deswegen Ubound($array) - 1
$array[$i] += 5
MsgBox(0, "$array["&$i&"]", "Der Wert bei $array["&$i&"] ist nun: "&$array[$i])
NextHier wird nun einfach überall plus 5 dazu gerechnet.
Man kann ein Array auch neu Deklarieren um es beispielsweise zu vergrößern. Ich weise aber schon mal darauf hin dass dies "relativ" lange dauert und wenn es in einer Schleife oft genutzt wird verlangsamt sich dadurch dein Script.
[autoit]
Ein Beispiel:Dim $array[1]
[/autoit]
$array[0] = "foo"
;oh da haben wir also was vergessen
ReDim $array[2]
$array[1] = "bar"
Warum können wir jetzt nicht einfach noch einmal Dim verwenden?
Wenn man Dim nochmal verwenden würde, würden alle vorherigen Werte gelöscht werden. Unser Array wäre also wieder leer.
Mit ReDim bleiben die alten Werte erhalten.Natürlich kann man ReDim auch in die andere Richtung verwenden.
[autoit]Dim $array[2]
[/autoit]
$array[0] = "Ein Beispiel"
$array[1] = "das brauchen wir eigentlich garnicht"
ReDim $array[1]
;nun wurde das Array verkleinert und der Wert aus $array[1] logischerweise gelöschtIch hoffe dies Hilft dir ein bisschen weiter
-
Am besten du verwendest für $tageins usw ein array:
Spoiler anzeigen
[autoit]Dim $tag[32][2]
[/autoit] [autoit][/autoit] [autoit]
$tag[0][0] = GUICtrlCreateInput('01', 176, 20, 21, 20);----Tag1 entspricht: $tageins
$tag[0][1] = GUICtrlCreateInput('', 176, 41, 21, 20); entspricht: $tage$tag[1][0] = GUICtrlCreateInput('01', 176, 20, 21, 20);----Tag2 entspricht: $tagzwei
[/autoit]
$tag[1][1] = GUICtrlCreateInput('', 176, 41, 21, 20); entspricht: $tagzDann kannst du das ganze Zeugs per Schleife bearbeiten:
Spoiler anzeigen
[autoit]Func _aktualplus();-----------------------------------------------------------------------------------------------------------------aktualisieren Plus
[/autoit]
GUICtrlSetData($monataus, _getmonatwahl(GUICtrlRead($monatzahl)))
For $i = 0 To Ubound($tag)-1
GUICtrlSetData($tag[$i][1], _getwochwntag(_DateToDayOfWeek(GUICtrlRead($jahr), GUICtrlRead($monatzahl), GUICtrlRead($tag[$i][0]))))
Next
_Schaltjahr()
EndFunc ;==>_aktualplus -
Stichwort LMZA http://de.wikipedia.org/wiki/Lempel-Ziv-Markow-Algorithmus
Ich will dir ja jetzt nicht zu nahe treten aber wie alt/bzw. in welche Klasse gehst du?
Prinzipiell wäre es denke ich möglich, jedoch wäre AutoIt beim Komprimieren wohl langsamer als so manch andere Sprache.
Davon abgesehen ist die Datenkompression eine schwierige Angelegenheit da man viel Wissen der Mathematik und der verschiedenen Betriebssysteme bzw. Dateisystemen haben sollte.Natürlich möchte ich dich nicht davon abhalten oder so aber so etwas ist schon ein Mammutprojekt
Für was bräuchtest du es denn? Ich könnte dir auch mal 7-Zip empfehlen man kann mit 7-Zip sehr gut per Commandline arbeiten.
-
so?
Spoiler anzeigen
[autoit]#include <inet.au3>
[/autoit] [autoit][/autoit] [autoit]$filename = @ScriptDir&"\ip.txt"
[/autoit] [autoit][/autoit] [autoit]
;get log
$file = FileOpen($filename, 0)
$read = FileRead($file)
FileClose($file);get IP-Adresses
[/autoit] [autoit][/autoit] [autoit]
;log:
$aret = StringRegExp($read, "DATABASE_ADDRESS \= (.+?)\,", 3)
If IsArray($aret) Then $log_ip = $aret[0];current:
[/autoit] [autoit][/autoit] [autoit]
$cur_ip = _GetIP();info
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "Info", "LOG IP: "&$log_ip&@CRLF&"CURRENT IP: "&$cur_ip);replace and save in file
[/autoit]
If $cur_ip <> $log_ip Then
$read = StringReplace($read, $log_ip, $cur_ip)
$file = FileOpen($filename, 2)
FileWrite($file, $read)
FileClose($file)
EndIf -
Ansonsten machst dir sowas:
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$gui = GUICreate("BSP", 200, 200)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$listbox = GUICtrlCreateList("BLABLA", 10, 10)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState()Do
[/autoit] [autoit][/autoit] [autoit]
Until GUIGetMsg() = -3Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
Local $iIDFrom, $iCode
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
$hlistbox = GUICtrlGetHandle($listbox)
Switch $ilParam
Case $listbox, $hlistbox
ConsoleWrite($iCode&@Crlf)
Switch $iCode
Case 2 ;Doppelklick
MsgBox(0, "", "Doppelklick auf Listbox")
EndSwitch
EndSwitch
EndFunc -
Naja im Prinzip ganz simpel:
PixelSearch gibt nicht immer ein Array zurück, nämlich dann wenn die Funktion den Pixel nicht findet.
Das war eigendlich schon der ganze Grund du hast dann zwar die Funktion nach oben genommen aber die If abfrage nicht.
Du kannst anstatt IsArray auch @error nehmen das ist völlig egal dein Script muss nur wissen wann ein Array da ist und wann nicht. -
willkommen hier im forum...
da du die regeln offenbar nicht kennst lege ich dir mal die wichtigsten dar:
1. eindeutige threadnamen verwenden
2. forensuche verwenden (sowas wird 2 mal pro woche gefragt)
3. keine BOTS!Wenn du was sinnvolles coden willst sagste bescheid dann helfen wir dir gerne
-
hast du da auch einen richtigen code weil eig. sollte das ohne probleme funktionieren dass die 3 sends kommen dann 59 secs gewartet wird und dann der 4. send kommt
-
Kein Problem...
Ich kann mich zwar nicht mehr wirklich erinnern wie ich das geschrieben habe aber es schaut irgendwie ganz gut aus...
Und funktionieren tuts auch noch! LOL -
klar geht das nicht ... gugg doch im Beispiel...
Bei _IEFormGetObjByName musst du den name des Formulars angeben: <form name="blabla" usw...Ich denke mal es handelt sich um diesen Abschnitt:
Spoiler anzeigen
Code
Alles anzeigen<form method="post"> <tr> <td align="left"> <img src="b/s.png" width=1 height=7 border=0><br> <div style="padding-left:2px"><b class="grau">E-Mail:</b><br> <input type="text" name="email" maxlength="80" value="" class="cartlogin"><br> <b class="grau">Passwort:</b><br> <input type="password" maxlength="20" name="passwort" class="cartlogin"><br> <img src="b/s.png" width=1 height=3 border=0><br> <input type="submit" name="button_login_login" value="Login" class="submit" style="width:45px"><br><br> Noch nicht dabei?<br> <a href="s,login,anmeldung.php"><b>Jetzt anmelden!</b></a> <br><br> <a href="s,login,pwvergessen.php">Passwort vergessen?</a></div> <img src="b/s.png" width=1 height=7><br> </td> </tr> </form>
Da dieses Formular leider keinen Namen hat hast du nun sprichwörtlich die A****karte gezogen.
Jetzt musst du mit _IEFormGetCollection die Formulare "auflisten" und dann dein Formular per index bestimmen. Wie das funktioniert steht ebenfalls in der Hilfe. -
Du musst das hier: TimerDiff($begin) erst in der Funktion machen und nicht schon vorher als globale Variable deklarieren.
-
-
[autoit]
$coords=PixelSearch(0,0,1024,768,"14072361",1)
[/autoit]
If IsArray($coords) Then
$xwert=Number($coords[0])
$ywert=Number($coords[1])
$fund=0
;if not @error=1 Then ;diese Zeile ist überflüssig!
MouseMove($xwert,$ywert)
MouseClick("left",$xwert,$ywert)
$fund=1
EndIf -
Du musst erst das Formular herausfinden:
_IEFormGetObjGByName
also das was in <form action="BLABLA" method="post">
Wenn kein Name angegeben ist musst du _IEFormGetCollection benutzenDie Rückgabe der Funktionen musst du für _IEFormElementGetObjByName benutzen
[autoit]
Aus der Hilfe:; *******************************************************
[/autoit]
; Example 1 - Get a reference to a specific form by name. In this case, submit a query
; to the Google search engine. Note that the names of the form and form
; elements can be found by viewing the page HTML source
; *******************************************************
;
#include <IE.au3>
$oIE = _IECreate ("http://www.google.com")
$oForm = _IEFormGetObjByName ($oIE, "f")
$oQuery = _IEFormElementGetObjByName ($oForm, "q")
_IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
_IEFormSubmit ($oForm) -
$coords=PixelSearch(0,0,1024,768,"14072361",1)
Diese Zeile muss vor allem anderen stehen und muss auch nicht extra durch dim deklariert werden! -
ich bin zwar grad en bissl dicht aber für das proggie hats noch gereicht
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>$gui = GUICreate("Rechnen", 200, 200)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$base = 300
$input = GUICtrlCreateInput("", 10, 10)
$label = GUICtrlCreateLabel("TEST", 10, 50, 150)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState()Do
[/autoit] [autoit][/autoit] [autoit]
Until GUIGetMsg() = -3Func makecol()
[/autoit] [autoit][/autoit] [autoit]
$read = GUICtrlRead($input)
If StringInStr($read, "+") Then
GUICtrlSetColor($input, 0x00FF00)
GUICtrlSetData($label, "Ergebniss "&Execute($base&$read))
ElseIf StringInStr($read, "-") Then
GUICtrlSetColor($input, 0xFF0000)
GUICtrlSetData($label, "Ergebniss "&Execute($base&$read))
Else
GUICtrlSetColor($input, 0x000000)
EndIf
EndFuncFunc WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
Local $iIDFrom, $iCode
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
$input2 = GUICtrlGetHandle($input)
Switch $ilParam
Case $input, $input2
Switch $iCode
Case 1024
makecol()
EndSwitch
EndSwitch
EndFunc