Änder mal Zeile 5 zu
[autoit]HotKeySet($tempF1)
[/autoit]Änder mal Zeile 5 zu
[autoit]HotKeySet($tempF1)
[/autoit][autoit]jo das funzt ganz gut aber nen time out gibts glaub ich nicht dafür, oder?
MfG EmEx
Global $x1, $y1
[/autoit][autoit][/autoit][autoit]While 1
$iTimer = TimerInit()
Do
$bPicture1 = ImageSearch("pfad zum bild", 1, $x1, $y1)
Until $bPicture1 Or (TimerDiff($iTimer) > 5000)
$iTimer = TimerInit()
Do
$bPicture2 = ImageSearch("pfad zum bild2", 1, $x1, $y1)
Until $bPicture2 Or (TimerDiff($iTimer) > 5000)
WEnd
Das was du da vorhast nennt sich TCP mit asynchronem I/O.
http://www.autoitscript.com/forum/index.php?showtopic=45189&st=0&p=336722&#entry336722
Ich schätze, dir fehlt die "große" SciTE Version:
http://www.autoitscript.com/cgi-bin/getfil…iTE4AutoIt3.exe
empfohlen
"Zusammengeschustert" trifft es eher.
Wenn du mich da eines besseren belehren kannst BugFix, dann gerne
So hat es zumindest oft genug bei mir Funktiniert.
Hallo Autobert,
Wenn ich versuche einen Ordner per Drag & Drop einzufügen, tut sich nichts. Auch die ColumnWidth's der ListView scheinen sich, zumindest bei "Pfad", immer wieder auf 0 zu setzen.
Habe den Code ehrlich gesagt nicht weiter betrachtet, habs bisher nur gestartet und "rumgespielt". Diese 2 Kleinigkeiten sind mir da spontan aufgefallen.
LG, SEuBo
Hoi,
ist es so besser?
[autoit]
;..
Case $aktuTag
GUICtrlSetData($text, StringRegExpReplace(StringRegExpReplace(GUICtrlRead($text),"(?s)(.*\[)([^]]+])(.*)","\1\2\3[/\2"),"\[/{2,}[^]]+]",""))
;...
EDIT: Merke grade, dass das immer noch Fehler birgt. Also mit einem einzelnen RegExpReplace ist das nicht möglich (lasse mich da gern eines besseren belehren).
Ehrlich gesagt fehlen mir jetzt grad etwas die nerven um noch weiter zu basteln. Vllt hat ja jemand anderes ne Idee.
das SDK auf der Seite beinhaltet auch eine DLL. Diese kannst du mit DLLCall ansprechen. Welche Befehle du da brauchst, kansnt du mit Sicherheit der Dokumentation entnehmen.
Das würd ich mit StringRegExpReplace lösen:
[autoit];...
[/autoit][autoit][/autoit][autoit]Case $aktuTag
GUICtrlSetData($text, StringRegExpReplace(GUICtrlRead($text),"(?s)(.+\[)([^]]+])(.+)","\1\2\3[/\2"))
;....
[/autoit]#include <GuiConstantsEX.au3>
#include <EditConstants.au3>
$msg = GUICreate("test", 250, 180)
$b = GUICtrlCreateButton("", 55, 10, 25, 25)
$b_end = GUICtrlCreateButton("", 130, 10, 25, 25)
$allTag = GUICtrlCreateButton("x", 20, 55, 35, 25)
GUICtrlCreateLabel("Alle Tags schließen", 58, 61, Default, 15)
GUICtrlCreateLabel("FETT", 84, 15, Default, 15)
GUICtrlCreateLabel("FETT End", 160, 15, Default, 15)
Dim $text = GUICtrlCreateEdit("", 20, 85, 210, 75, $ES_WANTRETURN)
[/autoit] [autoit][/autoit] [autoit]GUISetState()
GUISetState(@SW_SHOW)
main()
[/autoit] [autoit][/autoit] [autoit]Func main()
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $b
GUICtrlSetData($text, GUICtrlRead($text) & "")
Case $b_end
GUICtrlSetData($text, GUICtrlRead($text) & "")
Case $allTag
$text_b = GUICtrlRead($text)
$Anzahl_b = _CountTags($text_b, "")
$iOffen_b = $Anzahl_b[0] - $Anzahl_b[1]; Alternativ geht auch $iOffen_b = @extended
Select
Case $iOffen_b > 0
MsgBox(0, "", $iOffen_b & " Tags zu viel geöffnet")
For $i = 1 To $iOffen_b
GUICtrlSetData($text, GUICtrlRead($text) & "")
Next
Case $iOffen_b < 0
MsgBox(0, "", $iOffen_b & " Tags zu wenig geöffnet")
For $i = -1 To $iOffen_b Step -1
GUICtrlSetData($text, "[b]" & GUICtrlRead($text))
Next
EndSelect
EndSwitch
WEnd
EndFunc ;==>main
Func _CountTags($sString, $sTag)
Local $aRet[2]
StringReplace($sString, $sTag, "")
$aRet[0] = @extended
StringReplace($sString, "[/" & StringMid($sTag, 2), "")
$aRet[1] = @extended
Return SetError(0, $aRet[0] - $aRet[1], $aRet)
EndFunc ;==>_CountTags
Einfach mit ner For-Next Schleife
Meinst du sowas?
[autoit][/autoit][autoit][/autoit][autoit]$sText = "[b]das hier wird fett und unterstrichen, aber dann gibt es auch noch kursive Schrift!"
$aAnzahl = _CountTags($sText,"[b]") ; [b] Tags zählen
Select
Case $aAnzahl[0] = $aAnzahl[1]
MsgBox(0,"","Alle Tags geschlossen!")
Case $aAnzahl[0] < $aAnzahl[1]
MsgBox(0,"","Zu viele schließende Tags!")
Case $aAnzahl[0] > $aAnzahl[1]
MsgBox(0,"","Zu viele öffnende Tags!")
EndSelect
Func _CountTags($sString, $sTag)
Local $aRet[2]
StringReplace($sString, $sTag, "")
$aRet[0] = @extended
StringReplace($sString, "[/" & StringMid($sTag, 2), "")
$aRet[1] = @extended
Return $aRet
EndFunc ;==>_CountTags
Für Anfänger sicherlich einfacher zu verstehen und umzusetzen:
http://www.autoitscript.com/forum/index.php?showtopic=64738&st=0
Wie HotKeySet... nur für die Maus.
heraussuchens aus dem quellcode im internet iwie verschnellern könnte, denn bei mir dauert es pro wert ganze 6 sekunden. Bei 10 werten sind dass schon 1 minute-.-
ja, denn du brauchst dich ja auch nur 1x einzuloggen.
$hSession = _WinHttpOpen("Allvatar Reader") ; User Agent bestimmen
$hConnect = _WinHttpConnect($hSession, "soul.host.allvatar.com") ; Zum Host verbinden
_WinHTTPRequest($hConnect, "/login.php") ; Login Seite besuchen
_WinHTTPRequest($hConnect, "/login.php", "username=Antipope&password=Gilde&login=Login+-+Die+CMS-Bridge+ist+aktiviert.+Benutzt+die+Login-Daten+eures+Forums%2FCMS+um+euch+anzumelden.") ; einloggen
Diesen Teil kannst du an den Scriptanfang setzen. Warum immer wieder neu verbinden & einloggen? Ist ja unnötig.
Ich zitiere mal aus meinem GDI+ Tut:
ZitatAlles anzeigenMinimiert man das Fenster, oder verschiebt man es aus dem Desktopbereich, zieht man
ein anderes Fenster drüber, oder macht sonst etwas, was Windows dazu bewegt, unser GUI neu
zu zeichnen, ist das Quadrat weg. Für immer. Da kann man nichts machen.Ende des Tutorials.
Natürlich kann man da was machen. Und zwar müssen wir die Windows Nachricht abfangen,
[autoit]
die unser GUI dazu bewegt sich neu zu zeichnen. Klingt kompliziert, ist aber wirklich einfach.GUIRegisterMsg(0x000F,"WM_PAINT")
[/autoit]Dazu brauchen wir dann noch eine Funktion namens WM_PAINT, in der wir einfach nur das
Quadrat zeichnen.
In deinem Fall musst du natürlich statt dem Quadrat zu zeichnen, dein Bild zeichnen.
Sehr geil, danke! Jetzt muss ich nur wieder anfangen Blitz zu lernen
Hätt ich doch bloß keine Pause gemacht.
Nein es liegt nicht an dem Quantifizer, sondern an einem Denkfehler - das Subpattern wird so lange überschrieben, bis die nächste Zeile mit [ beginnt.
autoit.de/wcf/attachment/10645/
Ich bau dein Pattern jetzt nochmal Schritt für Schritt um.
Wir beginnen mit
Was ja keiner weiteren erklärung bedarf.
Danach wollen wir alle Zeilen die zwischen der Section und dem gesuchten Key "überbrücken".
Deine Idee mit
war schon garnicht so schlecht. Aber ändern erstmal den Klammertyp. Uns interessiert ja überhaupt nich, was in diesen Zeilen steht. Warum also in ein Subpattern wischenspeichern? Das sorgt nur für einen vollgemüllten Array den man da am Ende rausbekommt. Also ändern wir das ganze auf eine nicht fangende Klammer.
Danach folgt unser Suchwert. Sonst sucht dieses Pattern ja alles von [Section 2] bis zum Ende des Strings.
und der letzte schritt: Alles bis zum Zeilenende in ein Subpattern, und somit in ein seperates Arrayelement speichern.
Das wäre die Einfache Variante
Jetzt hat man nur das Problem, dass, wenn Metazeichen im Key vorkommen, diese falsch interpretiert werden. Deswegen sollte der Key mit \Q ... \E umschlossen werden.
und da der Benutzer schlampig sein kann und es ggf. mal mit nem Leerzeichen einträgt:
Das ganze nennt sich Working Directory zu deutsch Arbeitsverzeichniss.
Aus der Hilfe zu FileOpenDialog
Zitat@WorkingDir is changed on successful return
Mit
[autoit]FileChangeDir
[/autoit]
kannst du dieses ändern.
Hallo,
Du kennst wahrscheinlich folgende nicht:
\Q ... \E -> Metazeichen werden ignoriert. (s. Tutorial Kapitel 3.3)
(?> ... ) -> sog. Atomic Group. Bevor ich dir jetzt das Prinzip von Atomic Groups erkläre (das wär wieder ein ganzes Tutorial Kapitel wert), merk dir einfach, dass (?> ... ) das gleiche ist wie (?: ... ), nur anders. Auf jeden Fall ist es ein nicht-fangendes-Klammerpaar.
\r und \n sind @CR und @LF
Schlüsseln wir dein Pattern mal auf:
findet "[Section 2]" samt Zeilenumbruch
Danach folgt
Es wird also eine Zeile samt Zeilenumbruch gefunden. Da du aber auf das Subpattern einen * Quantifizer benutzt, wird es immer wieder überschrieben, und beinhaltet immer den letzen Satz, den es durchgegangen ist. Bis letztendlich ein [ kommt, was dann der Fall ist, wenn die nächste Section anfängt. Somit wird immer die letzte Zeile der Section ausgegeben.
Sowas?
[autoit]$sPath = FileOpenDialog("","","All (*.*)")
MsgBox(0,"",_IniRead("","Section 2","Key§","Default Wert"))
Func _IniRead($sPath, $sSection, $sKey, $sDefault)
$aRet = StringRegExp(FileRead($sPath), '(?i)\[\Q' & $sSection & '\E]\s+(?>.+\s+)*?\Q' & $sKey & '\E\s*=\s*([^\n\r]+)', 1)
If @error Then Return $sDefault
Return $aRet[0]
EndFunc ;==>_IniRead