ok hat sich wohl erledigt, hätte gleich im englischen Forum suchen sollen..
http://www.autoitscript.com/forum/index.php?showtopic=12473&hl=FTP.au3&st=75
ok hat sich wohl erledigt, hätte gleich im englischen Forum suchen sollen..
http://www.autoitscript.com/forum/index.php?showtopic=12473&hl=FTP.au3&st=75
Hallo,
ich bräuchte ein paar UDFs, die ein paar FTP Sachen managen können sollen:
* copyFille: Datei in andere Verzeichnisse kopieren:
gibts eine andere Möglichkeit als runterzuladen und wiederhochzuladen?
* existFile: soll testen ob eine Datei (schon) vorhanden ist
könnte evtl. über _FTPRenameFile() in den gleichen Namen und Fehlerabfrage funktionieren?
(* moveFile: verschieben von Dateien - geht mit _FTPRenameFile() unter Pfadangabe)
die ftp.au3 hat (http://www.autoitscript.com/forum/index.php?act=Attach&type=post&id=3314)
derzeit
_FTPOpen()
_FTPClose()
_FTPDelDir()
_FTPMakeDir()
_FTPRenameFile()
_FTPDelFile()
_FTPPutFile()
_FTPConnect()
_FTPOpen()
bzw. wo kriegt man die aktuelle ftp.au3?
Wie wäre es einfach den gesamten Text zu markieren (strg+a) und dann kopieren (strg+c) - die Zwischenablage kann man dann einfach auswerten.
Warum möchten manche Leute includes vermeiden?
Läuft/startet das skript viel schneller dann?
Wenn dem so ist gibt es Tools die ein Skript analysieren und die Includes dann einfach umwandeln in die jeweils verwendeten UDFs?
Aber mal von der Performance abgesehen, gibt es weitere Gründe gegen UDFs?
Ich denke er meint mit "sollte aber nur x zeichen von links vergleichen " einfach nurden linken Teilstring:
$test="abc ;def ghi"
$x=8
msgbox( 0,"stringtest",StringInStr ( StringLeft($test,$x ), ";" ))
und den Sting nicht teilen wollen, hm - schneller gehts wohl nicht, sprich eine elgantere Lösung.
Mal ein Beispiel dazu:
#include <array.au3>
$text = "1:30:00 test auf11:15:00 und noch9:30:40 [1:15:13] und noch 3:10:30"
$array1 = StringRegExp ( $text, "([012][0-9]:[0-5][0-9]:[0-5][0-9])|([0-9]:[0-5][0-9]:[0-5][0-9])" , 3 )
if @error = 0 and @extended = 1 Then
_arraydisplay($array1,"Zeiten")
EndIf
$array2 = StringRegExp ( $text, "([012][0-9]:[0-5][0-9]:[0-5][0-9])|([^[][0-9]:[0-5][0-9]:[0-5][0-9][^[])" , 3 )
if @error = 0 and @extended = 1 Then
_arraydisplay($array2,"Zeiten ohne []")
EndIf
Alles anzeigen
Hallo,
ich habe einen Textstring der Uhrzeiten enthält ("hh:mm:ss" oder "h:mm:ss") sowie auch Strings der Form "[d:dd:dd]" (d: digits 0-9) nun sollen nur die Uhrzeiten extrahiert werden - aber nicht die der anderen Form miterfasst werden.
solange ich nur die Uhrzeiten möchte ist es einfach:
$array = StringRegExp ( $text, "([012][0-9]:[0-5][0-9]:[0-5][0-9])|([0-9]:[0-5][0-9]:[0-5][0-9])" , 3 )
aber "[d:dd:dd]" auszuschliessen bereitet mir Mühe.
Versuche mit vorstehnden (?:[^[]) - bzw. abschliessenden (?:[^[]) bringen das gewünschte Ergebnis nur teilweise, weil wenn der $text="1:22:00 blabla 2:33:00" heißt, dann die Zeiten am Anfang bzw. Ende gar nicht erfasst werden.
Am einfachsten ginge es wenn man auch einen Nullstring "" als alternative hätte.
(Bsp.: "((?:[^[])[012][0-9]:[0-5][0-9]:[0-5][0-9](?:[^[]))|([^[][0-9]:[0-5][0-9]:[0-5][0-9][^[])")
Hat jemand eine Idee dazu?
Eventuell könnte man beide Ausdrücke parallel suchen und via Positionskontrolle voneinander trennen...
Ich kann nur einen Eintrag in die Liste einfügen - auf deinem screen shot sind aber mehrere.
Ich verwende die v3.1.1.128 (beta) Version
also mit Fenster rausnehmen könnte es so aussehen:
Hab eine dynamische Liste mit den Ignornamen, zu der man via der Auswahl noch welche dazufügen kann.
Ich mußte noch Fenster mit "|" im Namen rausfiltern - die verhunzen die Comboboxauswahl.
#include <GUIConstants.au3>
#Include <Constants.au3>
#include <Array.au3>
$g_szVersion = "SetTrans"
If WinExists ($g_szVersion) Then Exit
AutoItWinSetTitle ($g_szVersion)
Break (0)
TraySetState ()
TraySetToolTip ("SetTrans")
$main = GUICreate ("SetTrans", 200, 180)
$Slider1 = GUICtrlCreateSlider (10, 40, 180, 30)
GUICtrlSetLimit (-1, 255, 0)
$Combo1 = GUICtrlCreateCombo ("---- wähle ----", 10, 10, 180, 200)
Dim $ignorelist[1]
$ignorelist[0] ="Program Manager"
updatecombo()
$ontopon = GUICtrlCreateButton ("TOP ON", 10, 82, 85)
$ontopoff = GUICtrlCreateButton ("TOP OFF", 105, 82, 85)
$update = GUICtrlCreateButton ("Aktualisieren", 10, 115, 85)
$min = GUICtrlCreateButton ("Minimieren", 105, 115, 85)
$ignore = GUICtrlCreateButton ("ignorieren", 10, 150, 85)
$ignorereset = GUICtrlCreateButton ("Ignor aufheben", 105, 150, 85)
GUISetState (@SW_SHOW)
$old = 0
While 1
$new = GUICtrlRead ($Slider1)
$msg = GuiGetMsg ()
$tmsg = TrayGetMsg ()
Select
Case $tmsg = $TRAY_EVENT_PRIMARYDOUBLE
updatecombo ()
WinSetState ("SetTrans", "", @SW_SHOW)
case $msg = $ignore
$info= StringLeft(GUICtrlRead ($Combo1),30)
_ArrayAdd ( $ignorelist, $info )
updatecombo()
Case $msg =$ignorereset
dim $ignorelist[1]
$ignorelist[0] ="Program Manager"
updatecombo()
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $GUI_EVENT_MINIMIZE
WinSetState ("SetTrans", "", @SW_HIDE)
Case $msg = $update
updatecombo()
Case $msg = $min
WinSetState ("SetTrans", "", @SW_HIDE)
Case $msg = $ontopon
WinSetOnTop (GUICtrlRead ($Combo1), "", 1)
Case $msg = $ontopoff
WinSetOnTop (GUICtrlRead ($Combo1), "", 0)
Case $old <> $new
WinSetTrans (GUICtrlRead ($Combo1), "", 255-$new)
GUICtrlSetTip (3, $new)
$old = $new
EndSelect
Wend
Exit
Func IsVisible ($handle)
If BitAnd (WinGetState ($handle), 2) Then
Return 1
Else
Return 0
EndIf
EndFunc
Func updatecombo () ;aktualisiert die Combolist
GUICtrlSetData ($Combo1, "")
$wl = WinList ()
$setcomb = "---- wähle ----|"
For $i = 1 To $wl[0][0]
if $wl[$i][0] <> "" And IsVisible($wl[$i][1]) AND myArraySearch($ignorelist, $wl[$i][0])=0 Then
$split = StringSplit($wl[$i][0],"|")
$setcomb = $setcomb & StringLeft ($split[1], 30) & "|"
EndIf
Next
GUICtrlSetData (3, 0)
GUICtrlSetData ($Combo1, $setcomb, "---- wähle ----")
EndFunc
Func myArraySearch($feld, $value)
$result = 0
$split = StringSplit($value,"|")
$value = $split[1]
for $i = 0 to UBound($feld)-1
If StringLeft ($value,30) = StringLeft($feld[$i],30) Then
$result=1
ExitLoop
EndIf
Next
Return $result
EndFunc
Alles anzeigen
wenn es nur um den programm manger geht dann wohl so:
Zeile 19 & 45:
if $wl[$i][0] <> "" And $wl[$i][0] <>"Program Manager" AND IsVisible($wl[$i][1]) Then
Ich hab das mal für meine Zwecke umgestaltet.
Hab eine stay-on-top funktion dazugefügt, was praktisch ist wenn man mit mehreren Fenstern gleichzeitig arbeitet. Die Combobox läuft jetzt auch nicht über.
;Stay on Top - Transparency Manger
#include <GUIConstants.au3>
$main = GUICreate("SoTTM",157, 125, 192, 125)
$Slider1 = GUICtrlCreateSlider(8, 32, 142, 29)
GUICtrlSetLimit(-1,255)
$Combo1 = GUICtrlCreateCombo("Choose", 8, 8, 145, 160)
$wl = WinList()
$setcomb = ""
For $i = 1 To $wl[0][0]
if $wl[$i][0] <> "" And $wl[$i][0] AND IsVisible($wl[$i][1]) Then
$setcomb = $setcomb & StringLeft ( $wl[$i][0], 23 ) &"|"
EndIf
Next
GUICtrlSetData($Combo1,$setcomb)
$ontopon = GUICtrlCreateButton("On top on",10,70,60)
$ontopoff = GUICtrlCreateButton("On top off",87,70,60)
$update = GUICtrlCreateButton("&Update",10,95,137)
GUISetState(@SW_SHOW)
$old = 0
While 1
$new = GUICtrlRead($Slider1)
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $update
GUICtrlSetData($Combo1,"")
$wl = WinList()
$setcomb = "Choose|"
For $i = 1 To $wl[0][0]
if $wl[$i][0] <> "" AND IsVisible($wl[$i][1]) Then
$setcomb = $setcomb & StringLeft ( $wl[$i][0], 23 ) &"|"
EndIf
Next
GUICtrlSetData($Combo1,$setcomb,"Choose")
case $msg=$ontopon
WinSetOnTop(GUICtrlRead($Combo1), "", 1)
case $msg=$ontopoff
WinSetOnTop(GUICtrlRead($Combo1), "", 0)
Case $old <> $new
WinSetTrans(GUICtrlRead($Combo1),"",255-$new)
If $new = 0 Then WinSetTrans(GUICtrlRead($Combo1),"",0)
$old = $new
EndSelect
Wend
Exit
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFunc
Alles anzeigen