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

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

    • 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