filecheck funktion (udf)

  • Hey Leute,
    Ich hab hier mal eine kleine udf:
    mit der udf lassen sich daten auf existenz überprüfen und auch downloaden.
    Findet gebrauch um für programme erforderlich daten zu prüfen (eure scripts)

    ich stells hier mal rein um verbesserungsvorschläge + bugs zu erhalten :D

    Funktionen & Beschreibung:

    Spoiler anzeigen
    [autoit]

    _filecheck($filename) ; $filename = Dateiname der Liste mit den zu überprüfenden Daten.
    _filecheck_listcreate($filename, $files, $url) ;$filename = Name der Datei die die zu prüfenden Dateien beinhaltet. , $files= Dateien die überprüftwerden sollen, $url = url zum download ort der Datei(erste url wird erster datei zugeordnet, usw...)
    _filecheck_download($filename, $missing) ;$filename = siehe oben, $missing = fehlende dateien (werden von _filecheck() zurückgegeben)

    [/autoit]

    Source: V1.1 :

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    ;####Filecheck by YellowWeedSeed####
    ;beliebig änderbar solange es nicht als Eigen ausgegeben wird

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

    ;~####Errorcodes:####

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

    ;_____________________________________________________________
    ;#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
    ;#~ -1 = Fehler beim öffnen der Datei ~#
    ;#~ -2 = Fehler beim zählen der Zeilen ~#
    ;#~ -3 = $file[$i] ist kein array ~#
    ;#~ -4 = Fehler beim auslesen einer zeile in der Datei ~#
    ;#~ -10 = String enthält keine dateien ~#
    ;#~ -11 = Zeile konnte nicht beschrieben werden ~#
    ;#~ -12 = Datei existiert bereits ~#
    ;#~ -13 = Zeile enthält kein Dateiname ~#
    ;#~ -14 = Zeile enthält keine Endung ~#
    ;#~ -15 = $miss ist kein Array ~#
    ;#~ -16 = $miss enthält keine Dateien ~#
    ;#~ -17 = Fehler beim downloaden der Datei ~#
    ;#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
    ;_____________________________________________________________

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

    Func _filecheck($filename)

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

    $checksum = 0
    $miss = "missing Files: "
    $open = FileOpen($filename, 0)
    If @error Then Return -1

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

    $number = _FileCountLines($filename)
    If @error Then Return -2

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

    $x = $number + 1
    Dim $file[$x]
    Dim $file2[$x]
    Dim $string[$x]
    Dim $instr[$x]

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

    If Not IsArray($file) Then Return -3

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

    For $y = 0 To $number - 1

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

    $file2[$y] = FileReadLine($open, ($y + 1))

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

    If $file2[$y] = "" Then Return $y + 1 & "_1"

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

    $instr[$y] = StringInStr($file2[$y], "|")

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

    If $instr[$y] = 0 Then Return $y + 1 & "_2"

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

    $split1 = StringSplit($file2[$y], "|")
    $string[$y] = StringInStr($split1[1], '.')

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

    If $split1[2] = "" Then Return $y + 1 & "_3"
    If $string[$y] = 0 Then Return -14

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

    Next

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

    For $i = 0 To $number - 1
    $i2 = $i + 1
    $file[$i] = FileReadLine($open, $i2)
    If @error Then Return -4
    $split2 = StringSplit($file[$i], "|")
    If Not FileExists($split2[1]) Then
    $miss &= ("°" & $split2[1])
    ElseIf FileExists($split2[1]) Then
    $checksum += 1
    EndIf
    Next

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

    If $checksum = $number Then
    Return 1
    ElseIf $checksum < $number Then
    Return $miss
    EndIf
    FileClose($filename)
    EndFunc ;==>_filecheck

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

    Func _filecheck_listcreate($filename, $files_2, $url)
    If Not FileExists($filename) Then
    FileWrite($filename, "")
    $a = StringSplit($files_2, "°")
    If Not IsArray($a) Then Return -10

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

    If Not StringInStr($url, "°") = 0 Then
    $c = StringSplit($url, "°")
    Else
    $c = $url
    EndIf

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

    For $o = 1 To $a[0]
    _FileWriteToLine($filename, $o, $a[$o] & "|" & $c[$o])
    If @error Then Return -11
    Next
    Return 1
    Else
    Return -12
    EndIf
    EndFunc ;==>_filecheck_listcreate

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

    Func _filecheck_download($filename, $miss, $url)
    $fail = "failed downloads:"
    $download = StringSplit($miss, "°")
    If Not IsArray($download) Then Return -15

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

    $dim = UBound($download)
    If $dim > 2 Then Return -16

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

    For $z = 1 To $dim - 1
    InetGet($url, $download[$z])
    If @error Then $fail &= "°" & $download[$z]
    Next

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

    If Not $fail = "failed downloads:" Then
    Return $fail
    Else
    Return 1
    EndIf

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

    EndFunc ;==>_filecheck_download

    [/autoit]

    Es ist mein erstes Release hier, bitte nicht zu streng sein xD
    Kritik ist gern gesehen!!


    mfg Yellow

  • Ja -> Online-Datei Checker, danach fragte ma jemand.
    Also -> Dass man guckt ob ne Datei online existiiert ;)

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • hm, das geht schon aber es währe nicht sehr sauber: z.B. mit _ftp_fileread(). Da weiß man dann nicht 100% ob sie jetzt existiert oder es an etwas anderem lag.

    §1 Ich kann nicht für meine scripts inhaftiert werden, auch wenn bereits 3 Menschen erblindeten an den Folgen der Korrekturlesung.  8o

  • dann müsste man ja jede datei einzeln downloaden, was nicht wirklich toll ist weil es ja bei großen dateien ewig dauern würde :( muss iwi ohne download gehen

    §1 Ich kann nicht für meine scripts inhaftiert werden, auch wenn bereits 3 Menschen erblindeten an den Folgen der Korrekturlesung.  8o

  • ja das ist so 'ne Sache mit inetgetsize,
    bei mir funktioniert das nie, das script bleibt dann immer an der funktion kleben und macht garnichts mehr. Ich bin leider nicht der einzigste dem es so geht ;(

    §1 Ich kann nicht für meine scripts inhaftiert werden, auch wenn bereits 3 Menschen erblindeten an den Folgen der Korrekturlesung.  8o