Beiträge von Stilgar
-
-
Hier eine kleine, einfache Funktion die eine "InputBox" mit einer Variablen Anzahl an Eingabe-Feldern erzeugt.
-------
Jedem Eingabe-Feld ist ein Text zugeordnet, dessen Stil festgelegt werden kann (siehe Funktionsbeschreibung).
Die Stile der Eingabe-Felder können ebenfalls beliebig verändert werden.Die Ergebnis wird entweder als String geliefert, wobei die Eingaben darin mit dem Standard-Trennzeichen getrennt werden, oder als Array.
Spoiler anzeigen
[autoit]Global $aTexts[5] = ["**Verzeichnis**", "Benutzer", "Passwort", "", "__Information__"]
[/autoit] [autoit][/autoit] [autoit]
Global $aInputSt[5] = [-1, -1, 32] ; $ES_PASSWORD = 32Global $sValues = _MultiInput($aTexts, "Test", $aInputSt)
[/autoit] [autoit][/autoit] [autoit]
If Not @error Then MsgBox(0, "", $sValues); #FUNCTION# ===================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name ..........: _MultiInput
; Description ...: InputBox with multiple inputs
; AutoIt Version : V3.3.0.0
; Syntax ........: _MultiInput(ByRef $aText[, $sTitle = ""[, $vInputStyle = -1[, $iInputWidth = 200[, $sButtonR = "OK"[, $sButtonL = "Cancel"[, $iReturnMode = 0]]]]]])
; Parameter(s): .: $aText - Array with the text for the input-controls.
; * Text-style:
; | **Text** = bold
; | ""Text"" = italic
; | __Text__ = underline
; | --Text-- = strike
; $sTitle - Optional: (Default = "") : Window-title
; $vInputStyle - Optional: (Default = -1) : Style for the input-controls.
; | single var for a global style, or
; | array for different styles
; * lool at the "GUI Control Styles"
; $iInputWidth - Optional: (Default = 200) : Width of the inputs
; $sButtonR - Optional: (Default = "OK") : Text of the right button
; $sButtonL - Optional: (Default = "Cancel") : Text of the left button
; $iReturnMode - Optional: (Default = 0) :
; | 0 Returns a single string, values seperated with the GUIDataSeparatorChar
; | 1 Returns an array with all values
; Return Value ..: Success - string or array, depending on $iReturnMode
; Failure - empty string
; @ERROR - 1 if cancel is pressed
; | 2 UBound($aT) <> UBound($aInputFormat)
; | 3 $aText not an array
; Author(s) .....: Thorsten Willert
; Date ..........: Sun Nov 08 12:25:22 CET 2009
; Version .......: 3.0
; Example .......:
;
;Global $aTexts[5] = ["**Verzeichnis**", "Benutzer", "Passwort", "", "__Information__"]
;Global $aInputSt[5] = [-1, -1, 32] ; $ES_PASSWORD = 32; Global $sValues = _MultiInput($aTexts, "Test", $aInputSt)
[/autoit] [autoit][/autoit] [autoit]
; If Not @error Then MsgBox(0, "", $sValues)
; ==============================================================================
Func _MultiInput(ByRef $aText, $sTitle = "", $vInputStyle = -1, $iInputWidth = 200, $sButtonR = "OK", $sButtonL = "Cancel", $iReturnMode = 0)
Local $oldOpt = Opt('GUIOnEventMode', 0); Default parameters
[/autoit] [autoit][/autoit] [autoit]
If $iInputWidth < 100 Then $iInputWidth = 100
If $iInputWidth = Default Then $iInputWidth = 200
If $vInputStyle = Default Then $vInputStyle = -1
If $sButtonR = Default Then $sButtonR = "OK"
If $sButtonL = Default Then $sButtonL = "Cancel"; Parameter check (arrays only)
[/autoit] [autoit][/autoit] [autoit]
If Not IsArray($aText) Then
SetError(3)
Return ""
EndIf
If IsArray($vInputStyle) And UBound($vInputStyle) <> UBound($aText) Then
SetError(2)
Return ""
EndIfLocal $iS = 6 ; char width
[/autoit] [autoit][/autoit] [autoit]
Local $iT = UBound($aText)
Local $input[$iT], $aTextStyle[$iT], $aTextWidth[$iT]
Local $iOfs = 0, $iLen = 0
Local $sSC = Opt("GUIDataSeparatorChar")
Local $sRet = ""
Local $InputStyle
If Not IsArray($vInputStyle) Then $InputStyle = $vInputStyle; text width and styles
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To $iT - 1
$iLen = StringLen($aText[$i])
If $iLen > $iOfs Then $iOfs = $iLen ; max text width
If $iOfs < 10 Then $iOfs = 10
$aTextWidth[$i] = 400
$aTextStyle[$i] = 0
Select
; bold
Case StringRegExp($aText[$i], '^\*\*.*?\*\*$')
$aTextWidth[$i] = 600
$aText[$i] = StringMid($aText[$i], 3, $iLen - 4)
; italic
Case StringRegExp($aText[$i], '^"".*?""$')
$aTextStyle[$i] = 2
$aText[$i] = StringMid($aText[$i], 3, $iLen - 4)
; underline
Case StringRegExp($aText[$i], '^__.*?__$')
$aTextStyle[$i] = 4
$aText[$i] = StringMid($aText[$i], 3, $iLen - 4)
; strike
Case StringRegExp($aText[$i], '^--.*?--$')
$aTextStyle[$i] = 8
$aText[$i] = StringMid($aText[$i], 3, $iLen - 4)
EndSelect
Next; GUI
[/autoit] [autoit][/autoit] [autoit]
Local $hWin = GUICreate($sTitle, $iOfs * $iS + $iInputWidth + 40, $iT * 25 + 55)
For $i = 0 To $iT - 1
If IsArray($vInputStyle) Then $InputStyle = $vInputStyle[$i]
Select
Case $aText[$i] <> ""
GUICtrlCreateLabel($aText[$i] & ":", 16, $i * 25 + 15, $iOfs * $iS)
GUICtrlSetFont(-1, 8.5, $aTextWidth[$i], $aTextStyle[$i])
$input[$i] = GUICtrlCreateInput("", $iOfs * $iS + 20, $i * 25 + 10, $iInputWidth, -1, $InputStyle)
Case Else
GUICtrlCreateLabel("", 16, 1)
EndSelect
Next
Local $ok = GUICtrlCreateButton($sButtonR, 16, $i * 25 + 20, 75)
GUICtrlSetState(-1, 512) ; $GUI_DEFBUTTON = 512
Local $cancel = GUICtrlCreateButton($sButtonL, $iOfs * $iS + $iInputWidth - 55, $i * 25 + 20, 75)
GUISetState(@SW_SHOW)
; /GUIWhile True
[/autoit]
Switch GUIGetMsg()
Case -3, $cancel ; $GUI_EVENT_CLOSE = -3
GUIDelete($hWin)
Opt('GUIOnEventMode', $oldOpt)
SetError(1)
Return ""
Case $ok
For $i = 0 To $iT - 2
$sRet &= GUICtrlRead($input[$i]) & $sSC
Next
$sRet &= GUICtrlRead($input[$i])
GUIDelete($hWin)
Opt('GUIOnEventMode', $oldOpt)
If $iReturnMode = 0 Then
Return $sRet
Else
Return StringSplit($sRet, $sSC, 2)
EndIf
EndSwitch
WEnd
EndFunc ;==>_MultiInputStilgar
-
Version 2:
* diesmal als Commando-Zeilen Version zum Anbinden an Text-Editoren
* noch "kompliziertere" Ausgabe
* Unterstützung des "de_DE Hunspell dictionary"nein es wird kein Programm geben, das den Text wieder zurück wandelt, wer den "Quelltext" verliert ...
-
Eigentlich sollte es keinen Unterschied machen, wie ich schon sagte "probier mal" ...
Publizieren ist so eine Sache - da denke ich mir manchmal - blos nicht, die Fragen allein im englischen Forum per PN, oder falls ich mal wieder aus Versehen ICQ anmache, arten in einen Vollzeit Job aus
XPath ist ja auch keine exklusive Sache der FF.au3, es wird halt benutzt was der Browser an praktischen Dingen so hergibt.
Ob ich da guten Gewissens ok sagen weis ich nicht - ich kann ja die Hälfte nicht lesen ohne mich dort vorher anzumelden
-
Nun mit keine Werbung machen, bezog sich auf unsere Forenregeln hier, sonst entsteht gleich wieder eine Diskussion um das Wort B**.
Meine Antworten kannst Du gerne drin lassen.
Ein Tutorial dazu ist natürlich jederzeit willkommen
Probier doch mal:
[autoit]$b = _FFXPath( "//a[contains(.,'hier')]", "href", 7)
[/autoit]
ob es damit auch noch passiert.Nein natürlich nicht
-
Noch mehr Fragen in diesem "Interview" für dieses Tutorial, auf dieser Seite für die ich keine Werbung machen möchte?
-
Ganz klar ja.
HTMLRead ist eigentlich ein Relikt aus den allerersten Versionen, wo ich noch eine Ähnlichkeit der Funktionen zur IE.au3 beibehalten wollte - mittlerweile ziemlich überflüssig ...* Erstens ist der Befehl relativ laaaangsam - da nimmt man leichter gleich INetGetSource oder ähnliches.
[autoit]
* Änderungen per AJAX bekommt man gar nicht erst mit, wenn man den Quellcode ausliest - per Xpath hingegen ist das jederzeit möglich
* Es ist per xpath viel eleganter und sicherer Abzufragen, als den Quellcode mit den String-Funktionen zu zerlegen.
* Bei den Rückgaben die per Array erfolgen, spart man sich zig Schleifen in AutoIt.
* Viele Funktionen (rechnen usw.) kann man auch gleich per XPath erledigen, da erspart man sich es viele Werte abzufragen und diese dann weiter zu verarbeiten
* und da man auch Werte setzen kann und nicht nur welche Abfragen, wäre ein "ankreuzen" sämtlicher Checkboxen mit XPath einfach:_FFXpath("//input[@type='checkbox']", "checked=true", 6)
[/autoit]
schneller gehts ja wohl nicht mehr ...
* ... -
Wieder was zum Testen, die V0.5.3.10b-4, mit einer neuen Funktion:
_FFGetPosition:
Spoiler anzeigen
Code
Alles anzeigen; #FUNCTION# =================================================================== ; Name ..........: _FFGetPosition ; Description ...: Returns an array with the position of an element and/or the position and size of the FireFox content area. ; Beschreibung ..: Liefert ein Array mit der Position eines Elementes und/oder die Position und Größe des FireFox-Inhalts. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FF_GetPosition([$sElement = ""[, $sMode = "abs"]]) ; Parameter(s): .: $sElement - Optional: (Default = "") : Element or FFau3 - object. ; An empty string returns only the position and size of the content area ; $sMode - Optional: (Default = "abs") : ; | abs | absolute: absolute position of the element ; | rel | relative: relative position of the element to the content area ; Return Value ..: Success - array with the position and sizes ; | [0] = X position of the element ; | [1] = Y position of the element ; | [2] = X position of the content area ; | [3] = Y position of the content area ; | [4] = width of the content area ; | [6] = height of the content area ; Failure - ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Wed Oct 28 14:54:59 CET 2009 ; Link ..........: ; Related .......: ; Example .......: Yes ; ==============================================================================
http://thorsten-willert.de/Themen/FFau3/Testversion/FF.au3
falls man doch mal in die Verlegenheit kommt zu klicken (Flash oder ähnlliches "Geraffel" )
Eins schon mal vorweg - ich beantworte in Bezug auf diese Funktion keinerlei Fragen wie:
"Wie klicke ich mit MousClick auf einen HTML-Link ...." :wacko: -
Forum kenne ich keines (habe ich aber auch noch nie vermißt )
Ein gutes Handbuch ist das dort:
http://de.php.net/manual/de/
dort sind auch bei jeder Funktion meist unzählige von Benutzern eingetragene Beispiele dabei.Als schneller Einstieg ist das dort evtl. auch ganz nett:
[url]http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP/url] -
Stimmt das ist "etwas" umfangreicher. Xpath ist schließlich eine komplette Sprache zum Abfragen von XML-Strukturen.
Am besten mal die Links in der Dokumentation "überfliegen" oder die hier ansehen:
http://www.w3.org/TR/xpath (angeblich soll FF zwar Xpath 2.0 eingebaut haben - funktioniert aber anscheinend nicht ... )
http://de.selfhtml.org/xml/darstellung/xpathsyntax.htm
http://www.zvon.org/xxl/XPathTutor…r/examples.htmlDer Xpather-Vorschlag ist eine gute Grundlage, wenn man sehr komplizierte Strukturen hat, also z.B. sehr verschachtelte DIVs die nur Aufgrund von Texten, Klassen oder Ähnlichem zu unterscheiden sind.
Wenn man allerdings den kompletten xpath übernimmt läuft man Gefahr, das bei der kleinsten Änderung auf dieser Seite die Abfrage nicht mehr funktionert. Darum würde ich den Vorschlag von XPather als Grundlage nehmen und solange kürzen, bis kein eindeutiges Ergebnis mehr erscheint - die Ausdrücke lassen sich in XPather direkt testen.
Normalerweise sind die Strukturen einer Seite meist so einfach, daß man XPather eh nur noch zum "Testen" braucht.Auch würde ich die Abfragen von hinten her "aufzäumen".
Wenn z.B. ein img die id=*bild0815" hat, dann brauch ich nicht mehr als //img[@id='0815'] - da eine ID (normalerweise) eindeutig ist, braucht es keine weiteren Angaben.
Oder ich habe nur eine Tabelle auf der Seite, bei der ich aus der zweiten Reihe die zweite Spalte den Text haben möchte:
//tr[2]//td[2]
mehr braucht es dann da nicht. -
Hallo,
mehrere Fehler drin:
1) <br> ist inhaltslos, also gibt es auch keinen Text den man suchen könnte, also gleich th nehmen, aber:
2) starts-with ist schon wörtlich zu nehmen - der Inhalt von th beginnt nämlich mit
3) der erste Parameter von starts-with fehlt, nämlich was denn überhaupt damit beginnen soll.
Bei dem Ausdruck:
starts-with(.,'searchstring')
bezieht sich der Punkt auf das "aktuelle" Element, also bei//th[...] eben auf thLösung:
[autoit]$src = _FFXpath("//th[contains(.,'Schau hier')]//img/@src")
[/autoit] -
Hallo
du schreibst ja auch zwei "IFs" in eine Zeile, wenn dann so:
[autoit]
[/autoit]
if @error Then
MsgBox(0, 'Fehler', 'Im Verzeichnis "' & $sImagePath & '" wurden keine tib-Dateien gefunden!', 0, $hGui)
If Not @error Then
nur was soll die @error -Abfrage der MsgBox? Der @error wird immer 0 sein ... wenn du wissen möchtest was gedrückt wurde, mußt du den Rückgabewert der MsgBox abfragen, aber da die nur OK anzeigt ist eh nur ein Ergebnis möglich: 1Also könntest du allerdings schreiben:
[autoit]If @error AND MsgBox(0,"...","...") Then
[/autoit] -
Hallo,
einfachstes Beispiel - erstes Bild ohne irgendwelche Merkmale:
[autoit]$sSrc = _FFXpath("//img", "src", 9)
[/autoit]
; oder
$sSrc = _FFXpath("//img/@src")der zweite Parameter gibt an, von welchem Attribut man den Wert zurück haben möchte.
[autoit]
Default = textContent
d.h.$sLinkText = _FFXpath("//a", "textContent", 9)
[/autoit]
;==
$sLinkText = _FFXpath("//a", Default, 9)
;==
$sLinkText = _FFXpath("//a")Bis zu einem bestimmten Text zu suchen und darin das IMG zu suchen ist nicht direkt möglich, da alles über den XPath läuft.
Das heist, du mußt diesen Pfad mit angeben.Wenn sich das Bild z.B. innerhalb eines Div mit dem Text-Inhalt "bla blubber usw." befindet geht folgendes:
[autoit]$sSrc = _FFXPath("//div[starts-with(.,'bla blub')]//img", "src")
[/autoit] -
Achso - nein nicht die ganze catalog-Datei verschieben.
In der im Benutzerverzeichnis darf nur der Eintrag für die au3.xml stehen, also insgesamt das:XML
Alles anzeigen<?xml version="1.0"?> <!DOCTYPE MODES SYSTEM "catalog.dtd"> <MODES> <!-- Add lines like the following, one for each edit mode you add: --> <!-- <MODE NAME="foo" FILE="foo.xml" FILE_NAME_GLOB="*.foo" /> --> <MODE NAME="autoitscript" FILE="au3.xml" FILE_NAME_GLOB="*.{au3}"/> </MODES>
bzw. nur für die Edit-Modes die sich auch in diesem Verzeichnis befinden.In den Plugin-Optionen für CtagsSideKick kannst du dir für jeden Edit-Mode verschiedene Filter usw. anlegen.
Ja es ist etwas umständlich, vor allem wenn man mit dem Editor vorher noch nichts gemacht hat.
-
Du "befindest" dich unter Vista?
Ich werde die Pfade in dem Archiv mal ändern, die kommen ein bisschen in Konflikt mit den Berechtigungen unter Vista.
Die Strukturen sind folgende:
Für alle Benutzer liegen die Dateien, Macros usw. in Programme/jEdit/...
Für den aktuellen Benutzer lassen die sich auch speziell installieren in Userhome/.jedit/
dadurch gibt es auch zwei catalog-Dateien wobei die im Benutzerverzeichnis normalerweise leer ist.Wenn man also die au3.xml ins Benutzerverzeichnis kopiert, dann muß auch dort der passende Eintrag in die catalog-Datei.
Bei dem Problem mit der Console muß ich nochmal nachsehen, wenn ich Vista wieder zur Hand habe. (irgendein Rechte Problem)
Das komplettieren der Befehle erfolgt, wenn ctags eingestellt ist und SideKick funktioniert.
-
Nur bei Au3Check? Welche Einstellungen im Speziellen?
-
Hast Du den Edit-Mode schon "installiert" und das Macro "Update UDFs" schon laufen lassen?
Wenn nicht könnte das diesen Fehler nachziehen.Welche Einstellungen werden nicht gespeichert?
-
Zu alt ist "etwas" übertrieben, denn eigentlich ist ja die V4.2 die offizielle aktuelle Version
Ich ändere die mal ...
-
-
Console 4.4 wäre die aktuelle ...
Nur heute hier zum Download:
http://thorsten-willert.de/misc/Console.jarund in Programme/jEdit/jars/ spreichern
Funktioniert denn im Plugin -Manager der Update-Tab nicht?