1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Bitnugger

Beiträge von Bitnugger

  • FTP Verbindung herstellen

    • Bitnugger
    • 16. Juni 2015 um 20:53

    Das ist keine eingehende Verbindung - sein FTP-Server ist im LAN!

    Hm, du bist aber eine harte Nuss... lol

    Irgendwas machst du da falsch...
    Error: _FTP_Connect()

    Du bekommst ja nicht mal einen Connect hin... der Rest ist dann zwangsweise auch nicht erfolgreich.

    Da KEINE Verbindung zum Server hegestellt werden konnte, wurde somit ergo auch KEINE Datei heruntergeladen, sondern lediglich eine Datei zur Vorbereitung des Downloads von _FTP_ProgressDownload() lokal auf deinem PC geöffnet...

    AutoIt
    Local $hFile = FileOpen($s_LocalFile, $FO_OVERWRITE + $FO_BINARY)


    ...was die Ursache dafür ist, dass im Fehlerfall nach Beenden des Programms eine leere Datei zurückbleibt. Die Datei kann man dann natürlich getrost löschen... aber weitaus intelligenter ist es, solche Fehler von vornherein zu vermeiden, indem erst eine Verzeichnisliste vom Server geholt wird, um sie dann mit _ArraySearch() zu durchsuchen, bevor ein File gedownloadet werden soll, dass es gar nicht gibt. Wurde der Dateiname im Array mit "no case sensitive" gefunden, kann man den Dateiname aus dem Array verwenden, um den Download zu starten, ohne weiter über die richtige Schreibweise (klein GROSS oder mIxEd???) nachdenken zu müssen.

    AutoIt
    ...
    Local $aRemoteFiles = _FTP_ListToArray($hFTPSession, 0)
    If $aRemoteFiles[0] = 0 Then _Error() ; Abbruch, Exit oder Bier holen... ;-)
    If _ArraySearch($aRemoteFiles, $sLocalFileName, 1, 0, 0, 1) Then _Download($aRemoteFiles[0], $sLocalPath)
    ...


    Natürlich gibt es noch zig andere Ursachen, warum ein Download nicht klappt... z. B. wegen fehlender Berechtigungen... 'jens' meldet sich am Server an und will eine Datei downloaden, doch die gehört leider dem User 'root'. ||

    Nun habe ich ein weiteres Test-Programm für dich erstellt... ein etwas ausgefeilteres... ist aber noch nicht ganz fertig. <X

    Darin setze ich vorab dann auch den Maximalwert für 'CONNECT_TIMEOUT' & 'RECEIVE_TIMEOUT' - der Wert für CONNECT und RECEIVE und auch die Anzahl der Verbindungsversuche ist natürlich einstellbar, ebenso die Pause(n) dazwischen, wobei aber klar sein sollte, dass veränderte TIMEOUT-Werte keine Auswirkungen auf das Verhalten des Servers haben... was u. A. auch an den extremen Zeitunterschieden bis zum Erscheinen einer Fehlermeldung erkennbar ist, je nachdem, welcher Server gerade mit im Spiel ist. Bei einem im LAN installierten FTP-Server kam die Rückmeldung so schnell, dass ich nicht einmal genügend Zeit hatte, meinen Stinkefinger von der F5-Taste zu nehmen. 8)

    So gesehen bedeutet dies im positiven Sinne aber auch, dass der Server bereit ist und auf Anfragen reagiert... falls nicht, dann liegt oder sitzt der Fehler eindeutig auf der Seite des Clients - ca. 20 - 60 cm vor dem Monitor.

    Es werden noch etliche andere Dinge überprüft... z. B. ob der $sServername (Name oder IP) korrekt angegeben wurden und ob auf ein Ping geantwortet wird.

    Desweiteren habe ich in der FTPEx.au3 ein paar sehr markante und interessante Stellen gefunden, die mir aufgezeigt haben, dass ich die Fehlerbehandlung in meinem neuen Script noch wesentlich verbessern kann - das will ich erst noch alles checken... und dank BugFix habe ich jetzt so allmählich auch den Durchblick mit DllCall's.

    Ich werde schätzungweise Morgen im Laufe des Tages damit fertig sein... mal schauen... ich schiebe es hoch, sobald es fertig ist.


    Poste dann anschließend die Ausgabe von Debug() wieder hier... aber bitte setze sie in einen Spoiler!

    Nachtrag: Hast du denn mit FileZilla und/oder Co. eine Verbindung herstellen können?

  • Flac nach mp3 ?

    • Bitnugger
    • 14. Juni 2015 um 03:19

    Hier noch eine gute und kostenlose Lösung: FLAC-in-MP3-konvertieren

    ffmpeg... sehr schön... was kann das eigentlich nicht? ;)

    PS: Obiger Link ist nun korrigiert (und geprüft)!

  • AutoIt Sysinternal Tools Synchronizer v0.99.6 build 2020-09-23 beta

    • Bitnugger
    • 13. Juni 2015 um 10:32

    McAffe habe ich noch nie benutzt... aber ich denke, wie auch bei z. B. Comodo oder Kaspersky, ist es nicht das Anti-Virus-Modul, dass sich zu Wort meldet, sondern das Defense+-Modul, weil einige Tools von Nirsoft potentiell gefährlich sind.

  • Flac nach mp3 ?

    • Bitnugger
    • 13. Juni 2015 um 10:00

    Lösung 1: TC UP, eine bereits vorkonfigurierte und erweiterte Version von Total Commander, die neben vielen anderen Plugin auch einen AudioConverter installiert hat.

    Total Commander kostet allerdings ein paar Ocken... ist aus meiner Sicht aber die komfortabelste Lösung.

    FLAC2MP3-TCUP.jpg


    Lösung 2: xmedia-recode - Freeware

    Hier kann man einfach ein benutzerdefiniertes Profil auswählen, also MP3, und die FLAC-Dateien per Drag n Drop ins xmedia-recode Fenster ziehen.
    Dann die Anpassung für die Konvertierung vornehmen und einen Job für jede Datei hinzufügen. Danach auf Kodieren klicken und der Rest läuft von allein...
    FLAC2MP3-XMediaRecode.jpg

  • AutoIt Sysinternal Tools Synchronizer v0.99.6 build 2020-09-23 beta

    • Bitnugger
    • 13. Juni 2015 um 08:21

    Dein Tool ist ja wirklich sehr nett...

    aber ich bleibe dann doch lieber bei dem Windows System Control Center, weil es zudem auch die Suite von Nirsoft untsterstützt. ;)

  • FTP Verbindung herstellen

    • Bitnugger
    • 13. Juni 2015 um 07:51

    Hier noch ein leicht abgewandeltes Script...

    FTP-ProgressDownload - 2 Demos
    AutoIt
    #include <Debug.au3>
    #include <Misc.au3>
    #include <FTPEx.au3>
    
    
    
    
    
    
    #cs
    2 Beispiele eines FTP Downloads mit externem Progressfenster zur Demostration der Fortschrittsanzeige mit einer Benutzerfunktion
    #ce
    
    
    
    
    
    
    Global $hFTPSession, $hFTPConnect, $sServerName, $sUsername, $sPassword, $iPassive, $sLocalFile, $sRemoteFile
    
    
    
    
    
    
    _DebugSetup('MyFTP Control', True)
    
    
    
    
    
    
    _Demo1()
    _DebugOut("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
    _DebugOut("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
    _DebugOut("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
    _Demo2()
    
    
    
    
    
    
    
    
    
    
    Func _Demo1()
    ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ; Beispiel 1
    ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    $hFTPSession = -1
    $hFTPConnect = -1
    
    
    
    
    
    
    $sServerName = "ftp.mozilla.org" ; das ist ein real existierender Server - lol, ja was denn sonst?
    $sUsername = "" ; Annonyme Verbindung
    $sPassword = "" ; ohne Username und/oder Passwort
    $iPassive = 1 ; passives FTP nutzen (empfohlen)
    
    
    
    
    
    
    If FileExists("M:\TEMP\") Then ; M: ist meine RAMDISK
    $sLocalFile = "M:\TEMP\Firefox Setup 39.0b5.exe"
    Else
    $sLocalFile = @TempDir & "\Firefox Setup 39.0b5.exe"
    EndIf
    $sRemoteFile = "/pub/firefox/releases/39.0b5/win64/de/Firefox Setup 39.0b5.exe"
    
    
    
    
    
    
    If FileExists($sLocalFile) Then
    FileDelete($sLocalFile) ; alte Datei löschen
    _DebugOut("alte Datei gelöscht...")
    EndIf
    
    
    
    
    
    
    _myFTP_ProgressDownload()
    EndFunc ;==>_Demo1
    
    
    
    
    
    
    Func _Demo2()
    ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ; Beispiel 2
    ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    $hFTPSession = -1
    $hFTPConnect = -1
    
    
    
    
    
    
    $sServerName = "192.168.0.111"
    $sUsername = "XXXX"
    $sPassword = "XXXXXXXX"
    
    
    
    
    
    
    $sLocalFile = @TempDir & "\Drucken.txt"
    $sRemoteFile = "/var/usbstick/Drucken.txt" ; Backslashes '\' sind hier sicher falsch!!!
    
    
    
    
    
    
    If FileExists($sLocalFile) Then
    FileDelete($sLocalFile) ; alte Datei löschen
    _DebugOut("alte Datei gelöscht...")
    EndIf
    
    
    
    
    
    
    _myFTP_ProgressDownload()
    EndFunc ;==>_Demo2
    
    
    
    
    
    
    Func _myFTP_ProgressDownload()
    Local $iError = 0, $iExtended = 0, $sMessage = ""
    
    
    
    
    
    
    ; FTP Sitzung eröffnen
    $hFTPSession = _FTP_Open("myFTP")
    If @error Then
    $iError = @error
    $iExtended = @extended
    $sMessage = ""
    _DebugOut("Error: _FTP_Open()" & @CRLF & _
    " $hFTPSession = " & $hFTPSession & @CRLF & _
    " _FTP_GetLastResponseInfo = " & _FTP_GetLastResponseInfo($iError, $sMessage) & @CRLF & _
    " @error = " & $iError & @CRLF & _
    " @extended = " & $iExtended)
    _CloseFTP()
    ;_Exit(1)
    EndIf
    _DebugOut("OK: _FTP_Open() --> " & $hFTPSession)
    
    
    
    
    
    
    ; set up a status callback function
    Local $pCallback = _FTP_SetStatusCallback($hFTPSession, 'FTPStatusCallbackHandler')
    
    
    
    
    
    
    ; mit FTP Server verbinden
    $hFTPConnect = _FTP_Connect($hFTPSession, $sServerName, $sUsername, $sPassword, $iPassive, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0, $pCallback)
    If @error Then
    $iError = @error
    $iExtended = @extended
    $sMessage = ""
    _DebugOut("Error: _FTP_Connect()" & @CRLF & _
    " $hFTPSession = " & $hFTPSession & @CRLF & _
    " $hFTPConnect = " & $hFTPConnect & @CRLF & _
    " $sServerName = " & $sServerName & @CRLF & _
    " $sUsername = " & $sUsername & @CRLF & _
    " $sPassword = " & $sPassword & @CRLF & _
    " $iPassive = " & $iPassive & @CRLF & _
    " _FTP_GetLastResponseInfo = " & _FTP_GetLastResponseInfo($iError, $sMessage) & @CRLF & _
    " @error = " & $iError & @CRLF & _
    " @extended = " & $iExtended)
    _CloseFTP()
    ;_Exit(2)
    EndIf
    _DebugOut("OK: _FTP_Connect() --> " & $hFTPConnect)
    
    
    
    
    
    
    ; ProgressDownload
    #cs
    Der Funktionsname darf nicht, so wie es in der AutoIt-Hilfe gezeigt wird,
    in "" gesetzt werden!!!
    Falsch: Local $sFunctionToCall = "_UpdateProgress" <-- String
    Richtig: Local $sFunctionToCall = _UpdateProgress <-- UserFunction
    #ce
    
    
    
    
    
    
    Local $sFunctionToCall = _UpdateProgress
    
    
    
    
    
    
    ProgressOn("Downloading from: " & $sServerName, "..." & StringRight($sRemoteFile,35), "Status: 0%")
    _FTP_ProgressDownload($hFTPConnect, $sLocalFile, $sRemoteFile, $sFunctionToCall)
    If @error Then
    $iError = @error
    $iExtended = @extended
    $sMessage = ""
    ProgressOff()
    Switch $iError
    Case -1
    $sError = "Local file couldn't be created"
    Case -2
    $sError = "Unable to get RemoteFile size"
    Case -3
    $sError = "Open RemoteFile failed"
    Case -4
    $sError = "Read from Remotefile failed"
    Case -5
    $sError = "Close RemoteFile failed"
    Case -6
    $sError = "Download aborted by PercentageFunc and Return of Called Function"
    Case -7
    $sError = "Local file write failed"
    Case Else
    $sError = "Wow, ich bin ein Genie... lol"
    EndSwitch
    _DebugOut( _
    "Error: _FTP_ProgressDownload()" & @CRLF & _
    " $hFTPSession = " & $hFTPSession & @CRLF & _
    " $hFTPConnect = " & $hFTPConnect & @CRLF & _
    " $sLocalFile = " & $sLocalFile & @CRLF & _
    " $sRemoteFile = " & $sRemoteFile & @CRLF & _
    " $sError = " & $sError & @CRLF & _
    " _FTP_GetLastResponseInfo = " & _FTP_GetLastResponseInfo($iError, $sMessage) & @CRLF & _
    " @error = " & $iError & @CRLF & _
    " @extended = " & $iExtended)
    _CloseFTP()
    ;_Exit(3)
    EndIf
    ProgressOff()
    
    
    
    
    
    
    _DebugOut("OK: _FTP_ProgressDownload() - Download complete" & @CRLF & _
    "From: " & $sRemoteFile & @CRLF & _
    " To: " & $sLocalFile & @CRLF)
    
    
    
    
    
    
    Return 1 ; OK
    EndFunc ;==>_myFTP_ProgressDownload
    
    
    
    
    
    
    Func _UpdateProgress($iPercent)
    ;ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $iPercent --> " & $iPercent & @LF)
    
    
    
    
    
    
    ; Set the "subtext" and "maintext" of the progress bar window.
    Local $iInt = Int($iPercent)
    If $iInt < 100 Then
    ProgressSet($iInt, "Status: " & $iInt & "%") ; percent [, "subtext" [, "maintext"]]
    Else
    ProgressSet(100, "Done", "Download complete")
    Sleep(1000)
    EndIf
    If _IsPressed("77") Then Return 0 ; Abbruch bei F8
    Return 1 ; bei 1 Download fortsetzen
    EndFunc ;==>_UpdateProgress
    
    
    
    
    
    
    Func FTPStatusCallbackHandler($hInternet, $iContext, $iInternetStatus, $pStatusInformation, $iStatusInformationLength)
    #forceref $hInternet, $iContext
    If $iInternetStatus = $INTERNET_STATUS_REQUEST_SENT Or $iInternetStatus = $INTERNET_STATUS_RESPONSE_RECEIVED Then
    Local $iBytesRead
    Local $tSize = DllStructCreate('dword')
    _WinAPI_ReadProcessMemory(_WinAPI_GetCurrentProcess(), $pStatusInformation, DllStructGetPtr($tSize), $iStatusInformationLength, $iBytesRead)
    _DebugOut(_FTP_DecodeInternetStatus($iInternetStatus) & ' | Size = ' & DllStructGetData($tSize, 1) & ' Bytes Bytes read = ' & $iBytesRead)
    Else
    _DebugOut(_FTP_DecodeInternetStatus($iInternetStatus))
    EndIf
    EndFunc ;==>FTPStatusCallbackHandler
    
    
    
    
    
    
    Func _CloseFTP()
    If IsDeclared("hFTPConnect") Then _FTP_Close($hFTPConnect) ; Verbindung zum Server trennen
    If IsDeclared("hFTPSession") Then _FTP_Close($hFTPSession) ; FTP Session schließen
    EndFunc ;==>_CloseFTP
    
    
    
    
    
    
    Func _Exit($err = 0)
    Exit $err
    EndFunc ;==>_Exit
    Alles anzeigen
  • FTP Verbindung herstellen

    • Bitnugger
    • 12. Juni 2015 um 09:41
    Zitat von Probierer

    Was sagt mir das Ergebnis ???

    Offensichtlich wohl nichts, denn sonst würdest du diese Frage nicht stellen. ;)

    _DebugError() sagt...
    FAIL - _FTP_Connect
    Die Funktion _FTP_Connect() hat nicht wie erwartet ein Handle zurückgeliefert.
    _FTP_GetLastResponseInfo() lieferte leider keine detailierte Beschreibung des Fehlers.

    Der FTPStatusCallbackHandler sagt dazu aber...
    UNKNOWN status = 40

    Jedoch ohne dein Script zu sehen, will ich nicht weiter darüber nachdenken, was die Ursache dafür sein könnte.

    Das solltest du auch mal lesen:

    InternetConnect function

    List of FTP server return codes

    Und bitte - benutze in Zukunft einen Spoiler für solche langen Listen.

  • Firefox url auslesen

    • Bitnugger
    • 11. Juni 2015 um 22:55
    Zitat von Tweaky

    Die Anhänge sind leider beim Forumsupdate verlorengegangen.

    Hier solltest du fündig werden.

    Der Link tut es leider nicht mehr... aber der hier...

  • FTP Verbindung herstellen

    • Bitnugger
    • 11. Juni 2015 um 22:32

    Schau mal, ob dir das hilft...

    _DebugOut() sieht bei mir so aus...


    MyFTP_Control.jpg

    AutoIt: _FTP_SetStatusCallback-Test
    #include <Debug.au3>
    #include <FTPEx.au3>
    
    
    _DebugSetup('MyFTP Control', True)
    
    
    Local $hOpen = _FTP_Open('MyFTP Control')
    If $hOpen = 0 Then
    	_DebugError("_FTP_Open", @error, @extended)
    	;_Exit(1)
    Else
    	_DebugOut("OK - _FTP_Open" & @CRLF & "   - $hOpen = " & $hOpen)
    EndIf
    Local $pCallback = _FTP_SetStatusCallback($hOpen, 'FTPStatusCallbackHandler')
    
    
    Local $sServer = 'ftp.mozilla.org'
    Local $sUsername = ''
    Local $sPass = ''
    
    
    
    
    ; Fehler provozieren - 530 This FTP server is anonymous only.
    $sBadUsername = "mein_name_ist_hase"
    Local $hConn = _FTP_Connect($hOpen, $sServer, $sBadUsername, $sPass, 0, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0, $pCallback)
    If $hConn = 0 Then
    	_DebugError("_FTP_Connect", @error, @extended)
    	;_Exit(1)
    EndIf
    
    
    ;Fehler provozieren - @extended = 87
    $sBadPass = '4711geheiM!'
    Local $hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sBadPass, 0, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0, $pCallback)
    If $hConn = 0 Then
    	_DebugError("_FTP_Connect", @error, @extended)
    	;_Exit(1)
    EndIf
    
    
    ;Fehler provozieren - @extended = 12007
    $sBadServer = 'ftp.mozilla.orgie'
    Local $hConn = _FTP_Connect($hOpen, $sBadServer, $sUsername, $sPass, 0, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0, $pCallback)
    If $hConn = 0 Then
    	_DebugError("_FTP_Connect", @error, @extended)
    	;_Exit(1)
    EndIf
    
    
    ; ohne provozierten Fehler... bei Fehlschlag mehrmals versuchen...
    Local $hConn = 0
    Local $iAttempts = 5	; Anzahl der Verbindungsversuche
    Local $iDelay = 3		; Pause in Sekunden zwischen den Verbindungsversuchen
    For $c = 1 To $iAttempts
    	$hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sPass, 0, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0, $pCallback)
    	If $hConn = 0 Then
    		_DebugError("_FTP_Connect", @error, @extended)
    		If $c = $iAttempts Then _Exit(1)
    	Else
    		_DebugOut("OK - _FTP_Connect" & @CRLF & "   - $hConn = " & $hConn & @CRLF & "   - Benötigte Verbindungsversuche = " & $c)
    		ExitLoop
    	EndIf
    Next
    
    
    ; Get Current Directory on an FTP server
    Local $sCurrent = _FTP_DirGetCurrent($hConn)
    If $sCurrent = "0" Then	; die "" sind wichtig...
    	_DebugError("_FTP_DirGetCurrent", @error, @extended)
    Else
    	_DebugOut("OK - _FTP_DirGetCurrent: " & $sCurrent)
    EndIf
    
    
    ; Get Filenames and filesizes of current remote directory
    Local $aLS = _FTP_ListToArray2D($hConn)
    If $aLS[0][0] = 0 Then
    	_DebugError("_FTP_ListToArray2D", @error, @extended)
    Else
    	_DebugOut("OK - _FTP_ListToArray2D - Einträge: " & $aLS[0][0])
    	For $i = 1 To $aLS[0][0]
    		_DebugOut(StringFormat("   - %-26s", $aLS[$i][0]) & StringFormat("%26s", $aLS[$i][1]))
    	Next
    EndIf
    
    
    ; Set Current Directory on an FTP server - Fehler provozieren, denn "pub123" gibt es nicht...
    $sDirSetCurrent = _FTP_DirSetCurrent($hConn, "pub123")
    If $sDirSetCurrent = 0 Then _DebugError("_FTP_DirSetCurrent 'pub123'", @error, @extended)
    
    
    ; Set Current Directory on an FTP server - ohne Fehler, denn "pub" gibt es...
    $sDirSetCurrent = _FTP_DirSetCurrent($hConn, "pub")
    If $sDirSetCurrent = 0 Then _DebugError("_FTP_DirSetCurrent 'pub'", @error, @extended)
    
    
    ; Get Filenames and filesizes of current remote directory
    If $aLS[0][0] = 0 Then
    	_DebugError("_FTP_ListToArray2D", @error, @extended)
    Else
    	_DebugOut("OK - _FTP_ListToArray2D - Einträge: " & $aLS[0][0])
    	For $i = 1 To $aLS[0][0]
    		_DebugOut(StringFormat("   - %-26s", $aLS[$i][0]) & StringFormat("%26s", $aLS[$i][1]))
    	Next
    EndIf
    
    
    Func FTPStatusCallbackHandler($hInternet, $iContext, $iInternetStatus, $pStatusInformation, $iStatusInformationLength)
    	#forceref $hInternet, $iContext
    	If $iInternetStatus = $INTERNET_STATUS_REQUEST_SENT Or $iInternetStatus = $INTERNET_STATUS_RESPONSE_RECEIVED Then
    		Local $iBytesRead
    		Local $tSize = DllStructCreate('dword')
    		_WinAPI_ReadProcessMemory(_WinAPI_GetCurrentProcess(), $pStatusInformation, DllStructGetPtr($tSize), $iStatusInformationLength, $iBytesRead)
    		_DebugOut(_FTP_DecodeInternetStatus($iInternetStatus) & ' | Size = ' & DllStructGetData($tSize, 1) & ' Bytes    Bytes read = ' & $iBytesRead)
    	Else
    		_DebugOut(_FTP_DecodeInternetStatus($iInternetStatus))
    	EndIf
    EndFunc  ;==>FTPStatusCallbackHandler
    
    
    Func _DebugError($sFTP_Func, $iError, $iExtended)
    	Local $sMessage = ""
    	_DebugOut("~~~~~~~~~~~~~~~~~~~~~")
    	_FTP_GetLastResponseInfo($iError, $sMessage)
    	_DebugOut("FAIL - " & $sFTP_Func)
    	_DebugOut($sMessage)
    	_DebugOut("     - @error    = " & $iError)
    	_DebugOut("     - @extended = " & $iExtended)
    	_DebugOut("~~~~~~~~~~~~~~~~~~~~~")
    EndFunc  ;==>_DebugError
    
    
    Func _Exit($iError = 0)
    	Local $iFtpc = _FTP_Close($hConn)
    	Local $iFtpo = _FTP_Close($hOpen)
    	Exit $iError
    EndFunc  ;==>_Exit
    Alles anzeigen
  • Brauche Hilfe zu StringRegExp (Neu)

    • Bitnugger
    • 8. Juni 2015 um 21:04

    Ja, stimmt, war mein Fehler... ich hatte die Daten direkt in eine Variable gespeichert und deswegen alle @CRLF durch & _ ersetzt.

  • Brauche Hilfe zu StringRegExp (Neu)

    • Bitnugger
    • 8. Juni 2015 um 16:35

    Dann wird bei mir nur ein Wert ausgegeben... "48" - also nur die letzte Zeile.

  • Brauche Hilfe zu StringRegExp (Neu)

    • Bitnugger
    • 7. Juni 2015 um 14:40

    Vielen Dank!

    So funktioniert es nun auch:

    AutoIt
    $aIDs = StringRegExp($html, 'id=".*?([0-9]+)".+src="text/bild1.+"', 3)


    "(\d+)" ist ergo die verkürzte Form von "([0-9]+)"

  • Brauche Hilfe zu StringRegExp (Neu)

    • Bitnugger
    • 7. Juni 2015 um 13:24
    Zitat von AspirinJunkie

    hinter das erste .* noch ein ?

    Das funktioniert auch nicht...

    AutoIt
    #include <Array.au3>
    
    
    
    
    Local $html = ' <div class="blabla" id="blabla_blabla_999744" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1415px;top:622px;"><img src="text/bild1_3.png" style="position:relative;bottom:3px;"></div>"'
    $aIDs = StringRegExp($html, 'id=".*?([0-9].)+".+src="text/bild1.+"', 3)
    If IsArray($aIDs) Then
    _ArrayDisplay($aIDs)
    Else
    MsgBox(0, "Nix", "Nichts gefunden!")
    EndIf
    Alles anzeigen

    ...das liefert mir auch nur "44" und nicht wie erwartet/erwünscht "999744".

  • Icons.au3 - wo ist die nur? & Google Links

    • Bitnugger
    • 7. Juni 2015 um 12:40
    Zitat

    Gibt es einen Trick, wie die doch aufzurufen sind?

    Ja, den gibt es. Ich mache das mit Redirector in Firefox.

    Redirector.jpg

  • Brauche Hilfe zu StringRegExp (Neu)

    • Bitnugger
    • 7. Juni 2015 um 11:20

    Eigentlich wollte @blackcho ja nur die Zahl hinter der "ID=" haben...

    AutoIt
    #include <Array.au3>
    
    
    
    
    $html = ClipGet()
    $aIDs = StringRegExp($html, 'id=".*([0-9.]+)" .+src="text/bild1.+"', 3)
    If IsArray($aIDs) Then
    _ArrayDisplay($aIDs)
    Else
    MsgBox(0, "Nix", "Nichts gefunden!")
    EndIf
    Alles anzeigen

    Wenn ich das so mit Notepad++ teste, funktioniert es auch mit IDs, die mehr als zweistellig sind... mit AutoIt aber leider nicht... verstehe nicht, warum.

    Beisp.: <div class="blabla" id="blabla_blabla_999744" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1415px;top:622px;"><img src="text/bild1_3.png" style="position:relative;bottom:3px;"></div>


    PS: Der Editor ist ja mal so was von extrem lahm, da verliert man ja die Lust, überhaupt irgendwas auf AutoIt.de zu schreiben!

  • Zugriff auf autoit.de mit Chrome nicht möglich

    • Bitnugger
    • 3. Juni 2015 um 16:58

    Sicher, wünschenswert wäre es, wenn solche Dinge nicht an den User hängen bleiben - die Realität sieht aber leider oft anders aus.

    Ich frage mich eh, wieso überhaupt ein Foren-Update gemacht wurde, wenn niemand da ist, um evtl. aufgetretenden Fehler nach der Umstellung zu fixen?

  • Zugriff auf autoit.de mit Chrome nicht möglich

    • Bitnugger
    • 30. Mai 2015 um 13:45

    Mit einem Addon für Firefox ist dies aber kein Problem mehr.

    https://addons.mozilla.org/en-us/firefox/addon/redirector/

    Damit kann man sehr einfach alle Links von https://www.autoit.de/* zu autoit.de/* umleiten...

  • Sleep durch Schleife ersetzen

    • Bitnugger
    • 6. März 2015 um 17:32

    Ohne phpunit würde ich das dann in etwa so machen...

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <IE.au3>
    #include <Math.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $oIE = _IE_Example("basic") ; for testing

    [/autoit] [autoit][/autoit] [autoit]

    $iLoginTime = _RoleLogin()
    If @error Then
    ConsoleWrite("!@ Ops, no internet connection?" & @CRLF)
    Exit 1
    Else
    ConsoleWrite("!@ Login time = " & $iLoginTime & " = ms" & @CRLF)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Func _RoleLogin($iTimeOut = 10000, $iDelay = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local _
    $sMyString = "Admin", _
    $sLinkText = "", _
    $oLinks = _IELinkGetCollection($oIE)

    [/autoit] [autoit][/autoit] [autoit]

    For $oLink In $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
    _IEAction($oLink, "click")
    ExitLoop
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    While StringInStr(_IEPropertyGet($oIE,"title"), "Center") = 0 Or $iTimeOut <> 0
    Sleep($iDelay) ; Default = 0 ms
    If $iTimeOut = -1 Then ContinueLoop ; -1 = endlos warten
    $iTimeOut -= 1
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    If $iTimeOut = 0 Then Return SetError(1, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Return $iTimeOut / _Max(1, $iDelay)
    EndFunc

    [/autoit]
  • Kann mir jemand helfen Fehler besser abzufangen? - Array variable has incorrect number of...

    • Bitnugger
    • 5. Februar 2015 um 12:50

    Liegt wohl daran, weil da ein paar "EndIf" fehlen ... in Zeile 41 für Zeile 15, in Zeile 42 für Zeile 18.

    Zeile 18... es reicht doch zu prüfen ob bei _FileReadToArray() ein Fehler aufgetreten ist, und falls ja, diesen dann ausgeben.
    If _FileReadToArray(...) Then
    mach was damit...
    Else
    Fehler ausgeben...
    EndIf

    Zeile 16. $btemp... kommt im Quelltext nicht mehr an andere Stelle vor...

    Doch guck mal hier...

    Spoiler anzeigen
    C
    #include <File.au3>
    #include <InetConstants.au3>
    #include <String.au3>
    
    
    ;#AutoIt3Wrapper_Run_Debug_Mode=Y
    
    
    Global $pEPGDaten = "m:\EPGDaten.txt"
    Global $aEPGdaten[0][5]
    Global $iSenderID = 0, $iStartzeit = 1, $iDauer = 2, $iSendungsID = 3, $iSendung = 4
    Global $IP = "192.168.78.20", $Port = 80
    Global $URL = "http://" & $IP & ":" & $Port & "/control/epg?ext"
    
    
    $Spacer = _StringRepeat("-", 72)
    
    
    Bsp()
    ConsoleWrite($Spacer & @CR)
    ;_ArrayDisplay($aEPGdaten, "$aEPGdaten")
    
    
    _FindSendung("Da kommt Kalle", 2, 1)    ; $Anzahl, $Direction
    ConsoleWrite($Spacer & @CR)
    
    
    Func Bsp()
        ConsoleWrite($Spacer & @CR)
        If Not FileExists($pEPGDaten) Then
            ; Download the file in the background with the selected option of 'force a reload from the remote site.'
            Local $hDownload = InetGet($URL, $pEPGDaten, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
            ConsoleWrite("Download the file in the background" & @CR)
            Do
                Sleep(250)
            Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)
    
    
            ; Retrieve the number of total bytes received and the filesize.
            Local $iBytesSize = InetGetInfo($hDownload, $INET_DOWNLOADREAD)
            Local $iFileSize = FileGetSize($pEPGDaten)
    
    
            ; Close the handle returned by InetGet.
            InetClose($hDownload)
    
    
            ; Display details about the total number of bytes read and the filesize.
            ConsoleWrite("The total download size: " & $iBytesSize & @CR)
            ConsoleWrite("The total filesize     : " & $iFileSize & @CR)
            ConsoleWrite($Spacer & @CR)
        EndIf
        Local $aTemp
        If Not _FileReadToArray($pEPGDaten, $aTemp, $FRTA_NOCOUNT)    Then ; array is 0-based use UBound() to get size
            _Error("_FileReadToArray()", @error, @extended)
        Else
    
    
            Local $ubTemp = UBound($aTemp), $sSendung, $progress = $ubTemp / 10
            For $i = 0 To $ubTemp - 1
                If $i == 1 Or $i == 250 Or $i == 500 Or $i == 750 Or $i == 1000 Or $i == 1250 Or $i == 1500 Or $i == 1750 Or $i == 2000 _
                Then ConsoleWrite("Lese Daten in Array ein... bitte warten... " & $i & "/" & $ubTemp & @CR)
                If $aTemp[$i] = "" Then ContinueLoop
                $aSplit = StringSplit($aTemp[$i] , " ")
                $Error = @error
                Local $ubSplit = UBound($aSplit) - 1
                If $ubSplit >= 5 Then ; < 5 = Fehler!
                    $sSendung  = ""
                    For $j = 5 To $ubSplit
                        If $sSendung  = "" Then
                            $sSendung = $aSplit[$j]
                        Else
                            $sSendung &= " " & $aSplit[$j]
                        EndIf
                    Next
                    Local $aLine[1][5] = [[$aSplit[1], $aSplit[2], $aSplit[3], $aSplit[4], $sSendung]]
                    _ArrayAdd($aEPGdaten, $aLine, 0)
                Else
                    _Error("$StringSplit()", $Error, "", "Split = " & $ubSplit & " in Line " & $i +1)
                EndIf
            Next
            ConsoleWrite("OK - Daten wurden in Array eingelesen..." & @CR)
        EndIf
    EndFunc
    
    
    Func _FindSendung($sSendung, $Anzahl = 1, $Direction = 0) ; $Anzahl: -1 = Alle, $Direction: 0 = ascending, 1 = descended
        If $sSendung == "" Then
            ConsoleWrite("Keine Sendung als Suchparameter angegeben!" & @LF)
            Exit
        Else
            ConsoleWrite("Suche Sendung: " & $sSendung & @LF)
        EndIf
        If $Anzahl == -1 Then $Anzahl = UBound($aEPGdaten) - 1
        If $Direction == 0 Then
            $j = 0
            $k = UBound($aEPGdaten) - 1
            $Step = "1"
        Else
            $j = UBound($aEPGdaten) - 1
            $k = 0
            $Step = "-1"
        EndIf
        For $i = $j To $k Step $Step
            If $aEPGdaten[$i][$iSendung] == $sSendung Then
                ConsoleWrite("Sendung Nr. " & $i + 1 & " --> " & $aEPGdaten[$i][$iSendung] & @LF)
                $Anzahl -= 1
                If $Anzahl == 0 Then ExitLoop
            Else
                ContinueLoop
            EndIf
        Next
    EndFunc
    
    
    Func _Error($ErrorText, $Error, $Extended = "", $Kommentar = "")
        If $Extended == "" Then
            $Extended = ""
        Else
            $Extended = ', @extended = ' & $Extended
        EndIf
        If $Error == "" Then
            $Error = ""
        Else
            $Error = ', @error = ' & $Error
        EndIf
        Switch $ErrorText
            Case $ErrorText = "_FileReadToArray()"
                If $Error = 1 Then $Error = $Error & " [Error opening specified file]"
                If $Error = 2 Then $Error = $Error & " [Unable to split the file]"
                If $Error = 3 Then $Error = $Error & " [File lines have different numbers of fields (only if $FRTA_INTARRAYS flag not set)]"
                If $Error = 4 Then $Error = $Error & " [(No delimiters found (only if $FRTA_INTARRAYS flag not set)]"
            Case $ErrorText = "$StringSplit()"
        EndSwitch
        ConsoleWrite("!Fehler bei: " & $ErrorText & $Error & $Extended & " [" & $Kommentar & "]" & @CR)
        Exit
    EndFunc
    Alles anzeigen
  • ArrayMore.au3

    • Bitnugger
    • 16. Mai 2014 um 08:18
    Zitat von Tweaky

    Ich habe versucht deine Funktion "_Array2DSortFree" zu verwenden.

    Hi BugFix,

    verzeiht, dass ich diesen Thread wieder ausgraben...

    Bei mir funktioniert _Array2DSortFree() leider auch nicht, bekomme aber auch keine Fehlermeldung (@error = 0).

    Ich habe das Beispiel hier aus diesem Thread genommen. Die erste Spalte wird sortiert, der Rest nicht.

    Wenn du da bitte noch mal eine Bick drauf werfen würdest, wäre ich dir dankbar.

    Momentan benutze ich noch die AutoItVersion: 3.3.10.2, möchte aber die Tage ein Update machen, sobald ich mir sicher bin, worauf ich dabei achten muss, damit meine persönlichen Einstellungen nicht verloren gehen.

    Deweiteren sind mir in der _Array2DSortFree 3.3.0.0 und ArrayMore.au3 v 0.4 noch ein paar Dinge aufgefallen...

    _Array2DSortFree()

    [autoit]

    Local $aOut[UBound($ARRAY)][$ub2nd]

    [/autoit]


    Find: $aOut
    Count: 1 match
    $aOut wird an keiner Stelle weiter verwendet...


    ArrayMore.au3

    [autoit]

    _ArraySortDblDel()

    [/autoit]


    Find: _ArraySortDblDel .........Count: 1 match
    ...ist nur im Header als Kommentar zu finden

    [autoit]

    _SubArrayGetEntry()

    [/autoit]


    Find: _SubArrayGetEntry ........Count: 1 match
    ...ist nur im Header als Kommentar zu finden ...soll wohl _SubArray2DGetEntry() heißen?

    [autoit]

    _SubArraySetEntry()

    [/autoit]


    Find: _SubArraySetEntry ........Count: 1 match
    ...ist nur im Header als Kommentar zu finden ...soll wohl _SubArray2DSetEntry() heißen?

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™