Also wenn ich das richtig verstanden habe, brauchst du ein Pattern, das nur Zeilen ohne .SIC anzeigt.
Aber der String beginnt mit VV_ oder VE_ .
If StringRegExp($string, 'V(E|V)_[A-Z]*\.TXT*(?!.)') Then
; kein .SIC enthalten
EndIf
Also wenn ich das richtig verstanden habe, brauchst du ein Pattern, das nur Zeilen ohne .SIC anzeigt.
Aber der String beginnt mit VV_ oder VE_ .
If StringRegExp($string, 'V(E|V)_[A-Z]*\.TXT*(?!.)') Then
; kein .SIC enthalten
EndIf
Ohne Bugfixs UDF herabwürdigen zu wollen, aber in diesem Fall reichen auch die "Standard"-UDFs.
Wo er Recht hat, hat er Recht
- Man muß doch nicht gleich mit Kanonen auf Spatzen schießen ![]()
Hi,
wenn das 'M' sowieso immer dasein muß, braucht es ja gar nicht ins Input. Dann kann man auch einfacher prüfen.
Nun kannst du wirklich nur noch 1-10 eintippen. ![]()
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Test", 369, 420, 331, 130)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUICtrlCreateLabel('M', 90, 22, 12)
GUICtrlSetFont(-1, 11, 600)
$Input1 = GUICtrlCreateInput("", 104, 19, 28, 21, $ES_NUMBER)
$lbFalse = GUICtrlCreateLabel('Eingabe unzulässig', 180, 22, 100)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')
While 1
Sleep(100)
WEnd
Func Form1Close()
Exit
EndFunc
Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $hCtrl = $lParam
Local $hInput = GUICtrlGetHandle($Input1)
If $hCtrl = $hInput And $nNotifyCode = 1024 Then
Local $read = GUICtrlRead($Input1)
GUICtrlSetState($lbFalse, $GUI_HIDE)
If (StringLen($read) = 1 And $read = 0) Or (StringLen($read) > 1 And _
(Not StringRegExp($read , "((?<!.)[1-9]|10)(?!.)"))) Then
GUICtrlSetState($lbFalse, $GUI_SHOW)
GUICtrlSetData($Input1, '')
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc
Ich empfehle dir SQLite zu verwenden. Schau mal im Unterforum Datenbanken, da wirst du schon fündig. Fang einfach an und wenn Probleme auftauchen: Hier werden Sie geholfen! ![]()
Hi,
ich hab dir mal 'ne schönere Variante gebastelt. ![]()
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Test", 369, 420, 331, 130)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Input1 = GUICtrlCreateInput("", 104, 19, 65, 21)
$lbFalse = GUICtrlCreateLabel('Eingabe unzulässig', 180, 22, 100)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')
While 1
Sleep(100)
WEnd
Func Form1Close()
Exit
EndFunc
Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $hCtrl = $lParam
Local $hInput = GUICtrlGetHandle($Input1)
If $hCtrl = $hInput And $nNotifyCode = 1024 Then
GUICtrlSetState($lbFalse, $GUI_HIDE)
If StringLen(GUICtrlRead($Input1)) > 1 And (Not StringRegExp(GUICtrlRead($Input1) , "M(?i)(10|[1-9])(?!.)")) Then
GUICtrlSetState($lbFalse, $GUI_SHOW)
GUICtrlSetData($Input1, '')
Return
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc
Oh man, ich bin echt betrübt. Allein die Reaktionen bisher zeigen, das mein Empfinden richtig ist.
Wozu soll ich jemanden mit Namen benennen? Mir geht es doch nicht darum irgendwen anzuschwärzen oder zu maßregeln. Ich bin doch keine Gouvernante.
Mein Ansinnen ist schlicht und einfach, dass wir alle darüber nachdenken wie wir uns hier begegnen. Naja, das war wohl zuviel an Erwartung. ![]()
[autoit]wäre super, wenn jetzt jemand noch auf meine frage aus post #3 eingehen kann.
Send("{CTRLDOWN}{ALTDOWN}1{ALTUP}{CTRLUP}")
[/autoit]Hi,
ich mache mir etwas Sorgen um den Umgangston, der zur Zeit im Forum herrscht.
Ich bin seit fast 3 Jahren hier dabei und habe es immer als sehr wohltuend empfunden, dass i.A. weder Besserwissermentalität noch Selbstverleugnung vorzufinden waren. Das Klima war geprägt von freundschaftlichem, wohlwollendem Miteinander. User, die anderer Natur waren, haben sich recht schnell wieder verzogen.
Im Moment liegt jedoch teilweise ein Ton in der Luft, den ich mal als 'gereizt' bezeichnen möchte. Ich hoffe, die User die gemeint sind, fühlen sich auch angesprochen. Da werden die Werke Anderer recht grob runtergemacht, in einem anderen Thread gibt es dann die Retourkutsche durch den Betroffenen. Das ist eine Art und Weise, die schnell wieder abgelegt werden sollte.
Ich hoffe mal, dass dies eine Nebenwirkung der unfreundlichen Jahreszeit ist - also reiner Vitamin-D Mangel.
In diesem Sinne - habt Euch alle lieb und nehmt Euch in die Arme. ![]()
Na das ist ja eine gewaltige Aufgabe, die du dir vorgenommen hast. Wünsche dir viel Erfolg dabei.
( Deine Aufgabenstellung noch um Cybersex erweitern und alle sind glücklich
)
Ist mir bisher noch nicht begegnet ( was nix heißen muß
), aber ich weiß auch nicht ob das generell möglich ist, da die Einstellung ja schon von PC zu PC nicht im selben Menü ist. Viele Grafiktreiber versorgen dich dort mit zusätzlichen Tabs, auf denen herstellerspezifische Einstellungen vorgenommen werden können.
Nicht dass wir uns mißverstehen. Ich spreche nicht von den allgemeinen AutoItfehlermeldungen, sondern von den Auswertungen der Funktionsreturns:
[autoit]#include <FTP.au3>
$server = "SERVER.de"
$username = "USER"
$pass = "PASSWORD"
$Open = _FTPOpen('Test')
If @error Then MsgBox(0, '', 'FTP-Sitzung konnte nicht erstellt werden.')
$Conn = _FTPConnect($Open,$server,$username,$pass)
If @error Then MsgBox(0, '', 'Verbindung zum Server fehlgeschlagen.')
$Ftpp = _FTPPutFile($Conn, @TempDir & '\DOA.log', '/test.txt')
If @error Then MsgBox(0, '', 'Upload fehlgeschlagen.')
$Ftpc = _FTPClose($Open)
Edit: Das Flag für passiv noch
$Conn = _FTPConnect($Open,$server,$username,$pass, 0, 1, 0x08000000)
aber ezz geht es iwi nicht mehr
Na das ist ja mal 'ne goldige Fehlerbeschreibung. ![]()
Was ergibt denn dein Debugging? Wo tritt der Fehler auf? Bei ..Open, ..Connect, ..Upload? Das kannst du doch alles prüfen. Wenn die Funktionen fehlschlagen geben sie einen Fehlerwert zurück.
Ich handhabe das dynamisch, also definieren als $arTreeItem[1][2]. Bei Erstellen eines Item wird das Array mit ReDim vergrößert und die die ID in [n][0] eingetragen. In [n][1] hinterlege ich dann den Text des Item, das erleichert die Auswertung beim Zugriff.
Du hast nur den Text durch Leerstring ersetzt - die Zeile wird aber beendet mit einem @CRLF. Das mußt du auch entfernen, wenn die Zeile komplett verschwinden soll.
edit: Was genau nützt der Board manager?
Das kommt etwas unklar rüber mit dem Begriff. Soll ein Container für kopierte Elemente sein. Habs selbst noch nicht getestet.
Ich habe immer etwas Bauchschmerzen mit Programmen, die nicht portabel laufen. Eingriffe in mein System möchte ich weitgehend verhindern.
Ich möchte aber das der Anwender entweder eine vorhandene Datei oder einen vorhandenen Ordner wählen kann.
Gibt es dafür eine Lösung ?
Füge doch einfach eine Abfrage ein, wo der User wählen muß: Datei od. Ordner - und dann öffnest du den entsprechenden Dialog.
Ich vermute du lädst du die Datei rauf? Dazu gibt es schon entsprechende Skripts (ich glaube von Xeno), wie du die Größe beim Upload ermitteln kannst. Mußt mal suchen.
Hier findest du die Codes:
Hilfe AutoIt ==> Appendix ==> Windows Message Codes
Näheres über die Anwendung kannst du mit dem jeweiligen Code ergoogeln, oder bei MSDN nachschauen.
Hi,
da ich für meine Oberflächen auf Arbeit viel mit Datumsfeldern arbeite, habe ich mir jetzt mal eigene Datum-Inputs erstellt.
Der Nachteil beim GUICtrlCreateDate ist, dass man bei der Eingabe immer in einer der 3 Gruppen (TT, MM od. JJJJ) hängt und nicht fortlaufend schreiben kann.
Da ich den Date-Picker sowieso nie benutze, ist mir ein vorformatiertes Input lieber. Die Eingaben werden während des Schreibens auf Richtigkeit geprüft. Bei Eingabe eines falschen Wertes wird die Anzeige auf den Stand vor der Eingabe zurückgesetzt. Rein optisch bleibt der Cursor stehen. Beim Verlassen des Inputs wird nochmals validiert (falls unvollständige Eingabe). Liegt ein Fehler vor, bleibt der Fokus auf dem Input. Man kann das Input nur bei korrektem oder wieder gelöschtem Datum verlassen.
Überprüft wird der Datumszeitraum von 01.01.1900 bis 31.12.2999 (Da das Pattern bis 2099 unwesentlich kürzer als bis 2999 ist, habe ich den gesamten Zeitraum verwendet.). Löschen ist nicht mit Backspace möglich, sondern über: Markieren - Entfernen.
Zur Verwendung:
Die Inputs, wie im Bsp. erstellen und deren ID's im $arDateInput der Funktion MY_WM_COMMAND() hinterlegen.
Geschrieben werden kann nur, wenn ein Bereich markiert ist (also überschreibbar). Das ist gewollt, da immer der noch nicht geschriebene Teil des Datums markiert wird. Deshalb am Besten per TAB zu den Inputs bewegen, dann ist sofort alles markiert.
Edit: Oops, da hatte ich einen Fehler in die Validierungsfunktion reinkopiert... Ist nun behoben.
#include <Editconstants.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
Global $GUI, $Input1, $Input2, $Input3, $Input4
$GUI = GUICreate('TEST')
$Input1 = GUICtrlCreateInput("__.__.____", 20, 50, 62, 21, $ES_NUMBER)
$Input2 = GUICtrlCreateInput("__.__.____", 20, 80, 62, 21, $ES_NUMBER)
$Input3 = GUICtrlCreateInput("__.__.____", 20, 110, 62, 21, $ES_NUMBER)
$Input4 = GUICtrlCreateInput("__.__.____", 20, 140, 62, 21, $ES_NUMBER)
GUISetState()
GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case Else
; ...
EndSwitch
WEnd
Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $hCtrl = $lParam
Local $arDateInput[4] = [$Input1,$Input2,$Input3,$Input4] ; Array mit den ID der zu prüfenden Inputs
If $nNotifyCode = 1024 Then
For $i = 0 To UBound($arDateInput) -1
If $hCtrl = GUICtrlGetHandle($arDateInput[$i]) Then
_CheckDateInput($hWnd, $arDateInput[$i])
ExitLoop
EndIf
Next
ElseIf $nNotifyCode = 512 Then
For $i = 0 To UBound($arDateInput) -1
If $hCtrl = GUICtrlGetHandle($arDateInput[$i]) Then
_CheckByFocusLost($hWnd, $arDateInput[$i])
ExitLoop
EndIf
Next
EndIf
Return $GUI_RUNDEFMSG
EndFunc
Func _CheckDateInput($hWnd, $ID)
Local $current = StringReplace(GUICtrlRead($ID),'.',''), $str = '__.__.____'
Local $num = StringRegExp($current, '\d', 3)
If @error Then Return GUICtrlSetData($ID, $str)
Local $ub = UBound($num)
Local $arPattern[8] = [ _
"[0-3]", "(0[1-9]|[12][0-9]|3[01])", "(0[1-9]|[12][0-9]|3[01])[0-1]", _
"(((0[1-9]|[12][0-9])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))", _
"(((0[1-9]|[12][0-9])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))[12]", _
"(((0[1-9]|[12][0-9])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))[12][09]", _
"(((0[1-9]|[12][0-9])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))[12][09]\d", _
"((((0[1-9]|1[0-9]|2[0-8])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))" & _
"((19|2[0-9])([02468][1235679]|[13579][01345789])|(19|2[1235679])00))|((((0[1-9]|1[0-9]|2[0-9])02)|((0[1-9]|[12][0-9]|30)" & _
"(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))((19|2[0-9])(04|08|[2468][048]|[13579][26])|(20|24|28)00))"]
If Not StringRegExp($current, $arPattern[$ub-1]) Then $ub -= 1
Switch $ub
Case 0
GUICtrlSetData($ID, $str)
Case 1
GUICtrlSetData($ID, $num[0] & StringRight($str, 9))
Case 2
GUICtrlSetData($ID, $num[0] & $num[1] & StringRight($str, 8))
Case 3
GUICtrlSetData($ID, $num[0] & $num[1] & '.' & $num[2] & StringRight($str, 6))
$ub += 1
Case 4
GUICtrlSetData($ID, $num[0] & $num[1] & '.' & $num[2] & $num[3] & StringRight($str, 5))
$ub += 1
Case 5 to 8
Local $sYear = ''
For $i = 4 To $ub -1
$sYear &= $num[$i]
Next
GUICtrlSetData($ID, $num[0] & $num[1] & '.' & $num[2] & $num[3] & '.' & $sYear & StringRight($str, 8 -$ub))
$ub += 2
EndSwitch
ControlSend($hWnd, '', $ID, '{END}{SHIFTDOWN}{HOME}{RIGHT ' & $ub & '}{SHIFTUP}')
EndFunc
Func _CheckByFocusLost($hWnd, $ID)
If StringLen(StringReplace(StringReplace(GUICtrlRead($ID),'.',''),'_','')) = 0 Then Return
If Not StringRegExp(StringReplace(StringReplace(GUICtrlRead($ID),'.',''),'_',''), "((((0[1-9]|1[0-9]|2[0-8])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))" & _
"((19|2[0-9])([02468][1235679]|[13579][01345789])|(19|2[1235679])00))|((((0[1-9]|1[0-9]|2[0-9])02)|((0[1-9]|[12][0-9]|30)" & _
"(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))((19|2[0-9])(04|08|[2468][048]|[13579][26])|(20|24|28)00))") Then _
ControlFocus($hWnd, '', $ID)
EndFunc
Hab das in Python angefangen, da Auoit dafür nicht geignet ist.
Hab zwar keine Phyton-Kenntnisse - aber das was ich im Code gelesen hab, scheint mir ohne weiteres auch in AutoIt realisierbar.
Woraus schließt du, das AutoIt dafür ungeeignet ist?