Ich bin der leibhaftige Grinch, ich kann Weihnachten nicht ausstehen.
Nichtsdestotrotz wünsche ich euch Fehlgeleiteten ein paar schöne Tage. ![]()
Beiträge von BugFix
-
-
eMail regexen ist eklig. Du solltest dazu im Vorfeld schon definieren, welches reguläre Mailadressen sein können. Ein Pattern, dass so ziemlich alle Adressvarianten abdeckt ist mal eben locker 1000 Zeichen lang.
Aber mit dem hier sollte das meiste abgedeckt sein: ^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$
Edit: Kurze Erklärung warum das so lang sein könnte. Das gilt dann, wenn du gleich auf Gültigkeit der Adressen prüfst (also keine Trash- od. Fakemails)
-
Soweit ich beim Rumprobieren mit dem Resizing erfahren habe, wird das Resize-Verhalten nicht nur auf die Ctrl sondern auch auf den gesamten GUI-Hintergrund angewendet. Somit kannst du einen fixen Abstand zw. Ctrls aber dynamische Änderung der Ctrl selbst nicht realisieren.
-
Verwende doch die Acrobat API für den Direktzugriff.
Wenn du Programme automatisieren möchtest empfiehlt es sich immer zuerst nach einer API zu suchen. Das vereinfacht die Kommunikation mit Programmen ungemein.PS: Es gibt auch eine Matlab-API
-
[autoit]
_WinAPI_GetClassName($WindowHandle)
[/autoit] -
MatLab und Adobe besitzen bereits Batch Prozesse aber diese würde ich gerne mit Auto IT aufeinander abtimmen
Im Allgemeinen ist es recht unproblematisch, Batch nach AutoIt zu portieren. Denn du hast damit ja schon eine existierende Ablauflogik, die Basis eines jeden Skriptes. Nun muss also nur die Batch-Syntax auf AutoIt-Syntax umgerubelt werden, beileibe kein Hexenwerk. -
Der Aufbau deiner Datei ist eindeutig INI - also nutze die Ini-Funktionen von AutoIt dafür. Musst aber wohl die Datei dann auch umbenennen zur *.ini damit die Funktionen nutzbar sind.
-
Hier hast du ein prinzipielles Beispiel:
Spoiler anzeigen
[autoit]#include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]GUICreate('Test')
[/autoit] [autoit][/autoit] [autoit]
$cLV = GuiCtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200)
$hLV = GUICtrlGetHandle($cLV)
$btCheck = GUICtrlCreateButton('Check', 10, 240, 80, 20)Global $aLVItem[10]
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To 10
$aLVItem[$i-1] = GUICtrlCreateListViewItem($i & '|' & $i+10, $cLV)
NextGUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
Switch GUIGetMsg()
Case -3
Exit
Case $btCheck
If Number(_GUICtrlListView_GetItemText($hLV, 7, 1)) - Number(_GUICtrlListView_GetItemText($hLV, 1, 1)) > 5 Then GUICtrlSetBkColor($aLVItem[7], 0xFF0000)
EndSwitch
WEnd -
Sowas gibt es doch bei vielen Programmen.
Mag ja sein - aber nochmal: Mit den Standard-AutoIt-Funktionen ist das nicht realisierbar. -
P.S.: Ich glaube, ihr missversteht mein Problem ein bisschen
Da hilft besseres Beschreiben?
Also MenuItem können m.W. mit Standardfunktionen keine Checkbox erhalten, nur RadioItem sind möglich.
-
Checkbox = 4 (deaktiviert) dann soll sie auf 1 (aktiviert)
[autoit]
NEIN, nein und nochmals nein!! Das haben wir schon so oft thematisiert.
NIEMALS sollte man Checkboxen so abfragen. Eine Checkbox kann auch andere Werte ausgeben, wenn sie de/aktiviert ist.
Einfach der Hilfeempfehlung folgen und den Status mitIf BitAnd(GuiCtrlRead($Checkbox), $GUI_CHECKED) Then
[/autoit]prüfen.
Nur so ist gewährleistet, dass der korrekte Status abgefragt wird. -
Die Fehlermeldung besagt, dass du auf ein Arrayelement verweisen willst, das gar nicht existiert. Indexfehler.
Lass dir einfach beim Abarbeiten des Arrays in jedem Durchlauf den Index und zugehörige Werte ausgeben. Du wirst sehen das läuft durch und dann bricht es mit besagter Fehlermeldung ab, weil du plötzlich ausserhalb des Arrays adressierst.
Verwende einfach mal Ubound($Array) -1 als letzten Index ;), dann kannst du nicht ausserhalb landen. -
Du möchtest ein Programm remote ausführen. Schau mal, ob das passt: [ gelöst ] User Eingabe auf Remote-Maschine
-
Bei der Listview-UDF ist es empfehlenswert, das Handle statt der ID zu verwenden.
[autoit]$hListview = GuiCtrlGetHandle($ID_Listview)
[/autoit] -
Wozu kann man sowas brauchen? - Genau! Und nun wirf einen Blick auf unsere Forenregeln!
Wird nicht freigegeben.
-
Als wir vor Jahren angefangen haben ins Deutsche zu übersetzen, hatte ich zig Dateien übersetzt und auch häufig Korrektur gelesen. Somit hat sich auch der engl. Teil dermassen gefestigt, dass ich die deutsche Hilfe gar nicht benötige.
Sollte doch mal ein Passus unklar sein, schau ich kurz ins Wörterbuch.
Das Übersetzen hatte aber einen angenehmen Nebeneffekt: Man lernte Funktionen kennen, von denen man vorher nicht wusste, dass sie existieren.
-
Bevor ich mir Gedanken mache ob ein GUI in ein TAB integriert werden kann, stellt sich mir die Frage: "Warum soll da ein GUI rein?"
Du kannst doch auf dem TAB Controls platzieren, weshalb also eine GUI?Edit:
Hier mal eine LösungsvarianteSpoiler anzeigen
[autoit]#include <GuiTab.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>Global $xTab = 10, $yTab = 10
[/autoit] [autoit][/autoit] [autoit]$hMain = GUICreate('Test', 420, 400)
[/autoit] [autoit][/autoit] [autoit]
$cTab = GUICtrlCreateTab($xTab, $yTab, 400, 300)
$hTab = GUICtrlGetHandle($cTab)
$cTabItem1 = GUICtrlCreateTabItem('Item_1')
$cTabItem2 = GUICtrlCreateTabItem('Item_2')$aTabDisp = _GUICtrlTab_GetDisplayRect($hTab)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$hChild = GUICreate('Child', $aTabDisp[2]-$aTabDisp[0], $aTabDisp[3]-$aTabDisp[1], $aTabDisp[0]+$xTab, $aTabDisp[1]+$yTab, $WS_POPUP, $WS_EX_MDICHILD, $hMain)
GUICtrlCreateLabel('Das ist ein Child-GUI', 100, 50)
GUICtrlCreateLabel('Aber genausogut lassen sich Controls direkt auf dem TAB platzieren. :P', 25, 100)GUISetState(@SW_SHOW, $hMain)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
Switch GUIGetMsg()
Case -3
Exit
Case $cTab
If GUICtrlRead($cTab) = 1 Then
GUISetState(@SW_SHOWNA, $hChild)
Else
GUISetState(@SW_HIDE, $hChild)
EndIf
EndSwitch
WEnd -
Nun, bei mir passiert da nichts ungewöhnliches.
Was bleibt:
- Mausproblem?
- anderes Hardwareproblem? -
Dann zeig mal Code, wo das auftritt. Habe identisches System und kann dieses Verhalten nicht bestätigen.
-
Hi Spider,
du kannst auch die ReplaceCallback-Funktion von Taz77 dazu mißbrauchen:
Spoiler anzeigen
[autoit]$string = '<xs:complexType name="cmplx1">' & @CRLF & _
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
'<xs:sequence>' & @CRLF & _
'<xs:element name="name1" type="type1"/>' & @CRLF & _
'<xs:element name="nameN" type="typeN"/>' & @CRLF & _
'</xs:sequence>' & @CRLF & _
'</xs:complexType>' & @CRLF & _
'<xs:complexType name="cmplxN">' & @CRLF & _
'<xs:sequence>' & @CRLF & _
'<xs:element name="name2" type="type2"/>' & @CRLF & _
'<xs:element name="nameX" type="typeX"/>' & @CRLF & _
'</xs:sequence>' & @CRLF & _
'</xs:complexType>'$patt = '(?:complexType name="(.*?)">)|(?:<xs:element name="(.*?)")|(?: type="(.*?)")'
[/autoit] [autoit][/autoit] [autoit]Global $aMatch[1] = [0]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_StringRegExpReplace_Callback($string, $patt, '_AddMatch("$1","$2","$3")')For $i = 1 To $aMatch[0]
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite($aMatch[$i] & @LF)
NextFunc _AddMatch($1,$2,$3)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$aMatch[0] += 1
ReDim $aMatch[$aMatch[0]+1]
If $1 <> '' Then
$aMatch[$aMatch[0]] = $1
ElseIf $2 <> '' Then
$aMatch[$aMatch[0]] = $2
ElseIf $3 <> '' Then
$aMatch[$aMatch[0]] = $3
EndIf
EndFunc; #FUNCTION# ====================================================================================================================
[/autoit]
; Name ..........: _StringRegExpReplace_Callback
; Description ...: Replaces ByRef all matches in a string by manipulation of the matches in a callback function
; Parameters ....: $sString String to manipulate
; ...............: $sPattern RegExp pattern for the match
; ...............: $sCallback Callback function as string, i.e. "MyCallback('$1')" -- '$1' represents the match
; .....optional..: $sBefore String to insert before the manipulated match
; .....optional..: $sAfter String to insert after the manipulated match
; Return values .: Success 1
; ...............: Failure 0 set error = 1
; Author ........: Taz77
; ===============================================================================================================================
Func _StringRegExpReplace_Callback(ByRef $sString, $sPattern, $sCallback, $sBefore = '', $sAfter = '')
$sString = Execute("'" & StringRegExpReplace(StringReplace($sString, "'", Chr(26), 0, 2), $sPattern, $sBefore & "'&" & $sCallback & "&'" & $sAfter) & "'")
If @error Then
ConsoleWrite('_StringRegExpReplace_Callback error! Pattern: "' & $sPattern & '", Callback: "' & $sCallback & '"' & @LF)
Return SetError(1,0,0)
EndIf
$sString = StringReplace($sString, Chr(26), "'", 0, 2)
Return 1
EndFunc ;==>_StringRegExpReplace_Callback