Key.au3

  • So hab mal wieder ne kleine UDF geschrieben.vll kann einer die brauchen.Sie ist nützlich für Setups mit Seriennummerüberprüfung usw.
    Ja hoffe sie gefällt euch :) bin offen für Verbesserungsvorschläge und hoffe auf feedback.Wer Ideen zur Verbesserung hat her damit :)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <File.au3>
    ;===========================================================================================================================================
    ;Name:_KeyTest
    ;Beschreibung: Überprüft ob ein Code in einer Datei vorhanden ist.
    ;Parameter: $key: Der Code der überprüft werden soll.
    ; $f_name: Datei in der Die Codeliste abgespeichert ist.
    ;Return Values: Falls vorhanden : 1
    ; Ansonsten : 0
    ;Author:nof@ker
    ;===========================================================================================================================================
    Func _KeyTest($key,$f_name)
    $s_keys=StringSplit(FileRead($f_name),";")
    _ArrayDelete($s_keys,0)
    $Same=False
    For $i=0 to Ubound($s_keys,1)-1
    If $s_keys[$i]=$key Then
    $Same=True
    EndIf
    Next
    If $Same=True Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc
    ;===========================================================================================================================================
    ;Name:_SetupKeysGen
    ;Beschreibung: Generiert eine bestimmte Anzahl 20-stelliger zufälliger Codes die in einer Datei abgespeichert werden.
    ;Parameter: $s_count: Anzahl der Codes.
    ; $f_name: Datei in der die Codes abgespeichert werden sollen.
    ;Return Values: Bei Erfolg : 1
    ; Ansonsten : 0
    ;Author:nof@ker
    ;===========================================================================================================================================
    Func _SetupKeysGen($s_count,$f_name)
    _FileCreate($f_name)
    For $j=1 to $s_count
    For $i=0 to 20
    $G=_Gen()
    FileWrite($f_name,$G)
    Next
    If $j <> $s_count Then
    FileWrite($f_name,";")
    EndIf
    Next
    If FileRead($f_name) <> "" Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc
    ;===========================================================================================================================================
    ;Name:_KeyGen
    ;Beschreibung: Generiert einen zufälligen 20-stelligen Code.
    ;Parameter: -
    ;Return Values: 20-stelliger Code
    ;Author:nof@ker
    ;===========================================================================================================================================
    Func _KeyGen()
    Dim $G
    For $i=0 to 20
    $G &= _Gen()
    Next
    Return $G
    EndFunc
    ;===========================================================================================================================================
    ;Name:_Gen
    ;Beschreibung: Genieriert eine Nummer oder einen Buchstaben (Zufall)
    ;Parameter: -
    ;Return Values: Nummer oder Buchstabe
    ;Author:nof@ker
    ;===========================================================================================================================================
    Func _Gen()
    If Random(1,2,1)=1 Then
    Return Random(1,9,1)
    Else
    Return Chr(Random(Asc("A"),Asc("Z"),1))
    EndIf
    EndFunc

    [/autoit]

    3 Mal editiert, zuletzt von nof@ker (28. März 2009 um 14:14)

  • Hallo nof@ker,

    beim Überfliegen hab ich erstmal festgestellt, dass Deine Funktion _KeyGen nicht einen 20-stelligen Schlüssel erzeugt, sondern einen 21-stelligen ;)

    Das mit dem Array brauchst Du auch nicht in der Funktion, kannst die Variable einfach mit &= erweitern
    siehe:

    Spoiler anzeigen
    [autoit]

    Func _KeyGen()
    Dim $G
    For $i=0 to 20
    $G &= _Gen()
    Next
    Return $G
    EndFunc

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    • Offizieller Beitrag

    Seriennummern sehen doch meist eher so aus: QQ32-1EXG-VM41-TDC2-J1N7

    Ist nicht so schwer und geht ganz ohne Arrays. Includes braucht man auch keine. ;)

    Hab das mal schnell gescriptet. Wenn Du es selbst versuchen willst, den Spoiler nicht öffnen! :)

    Spoiler anzeigen
    [autoit]


    MsgBox(0, '', _KeyGen(4, @ScriptDir & '\test.txt'))

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

    Func _KeyGen($iCount, $sFile)
    Local $hFile = FileOpen($sFile, 2) ; Datei zum speichern öffnen
    If $hFile <> -1 Then ; wenn erfolgreich, dann...
    Local $sOut = '' ; Ausgabevariable deklarieren
    For $i = 1 To $iCount ; Schleife für die Anzahl der Seriennummern
    For $j = 1 To 20 ; Schleife für die Anzahl der Buchstaben/Zahlen
    $sOut &= StringMid('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', Random(1, 36, 1), 1) ; zufällige(n) Buchstaben/Zahl hinzufügen
    If $j/4 = Int($j/4) And $j < 20 Then $sOut &= '-' ; nach jeweils 4 Zeichen ein Bindestrich einfügen
    Next
    $sOut &= @CRLF ; Zeilenumbruch für die nächste Seriennummer
    Next
    FileWrite($hFile, StringTrimRight($sOut, 2)) ; alle Seriennummern abspeichern
    FileClose($hFile) ; Datei schließen
    Return $sOut ; die Seriennummern als String zurückgeben
    Else
    Return SetError(1, 0, 0) ; Fehler beim öffnen der Datei (@error = 1, Rückgabe = 0)
    EndIf
    EndFunc

    [/autoit]
  • @mazmo

    so aber jetzt reichts langsam, du hast 9 posts davon sind 3 sinnvoll der rest spam und capslock posts -.-

    wenn was ned geht dann hast entweder du was falsch gemacht (was ich sehr stark annehme) oder es giebt n fehler im script, falls ja bekommst du den fehler und denn müsstest du dann hier posten