Hey,
wollte einen kleinen PasswordCreator programmieren, was ja eig. kein Problem ist... O.o Hatte sowas früher mal im FirstLevelSupport gebraucht und dachte, ich schreib den mal nach, falls ich es wieder brauche xD...
Aber ich habe einen Fehler, den ich einfach nicht sehe =.=...
Diese Schleife macht mir Mucken:
[autoit]For $i = 1 To GUICtrlRead($inpQuantity)
Next
Er geht sie einfach immer nur 1x durch, kA, für wie viele Werte, auch wenns $i = 1 To 3 ist z.B...
Wenn ich jetzt aber z.B. 50 eingebe, dann geht er die Schleife kA wie oft durch, habe bei 70 aufgehört... xD
Ich bin echt verwirrt, wo ich da einen Fehler habe *_*...! Und selbst, wenn er viele Passwörter kreiert, schreibt er nur eins in die Datei (FileWrite buggt bei mir eh immer rum, wenn ich das nutzen will, grml...)
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $sLowerLetter = "abcdefghijklmnopqrstvwxyz"
Global $sUpperLetter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Global $sNumbers = "0123456789"
Global $sSpecialCharacter = "()[]{}?!$%&/=*+~,.;:<>-_" ; Regulär nutzbare Sonderzeichen
GUICreate("Password Creator by Acanis", 418, 354)
GUICtrlCreateGroup("Options", 8, 8, 401, 337)
GUICtrlCreateGroup("Case", 24, 32, 161, 105)
$radMixed = GUICtrlCreateRadio("Mixed", 32, 56, 113, 17)
GUICtrlSetState(-1, $GUI_Checked)
$radUpper = GUICtrlCreateRadio("Upper", 32, 80, 113, 17)
$radLower = GUICtrlCreateRadio("Lower", 32, 104, 113, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Characters", 208, 32, 185, 177)
$radAZ = GUICtrlCreateRadio("Use A to Z", 216, 56, 113, 17)
GUICtrlSetState(-1, $GUI_Checked)
$rad09 = GUICtrlCreateRadio("Use 0 to 9", 216, 80, 113, 17)
$radAZ09 = GUICtrlCreateRadio("Use A to Z and 0 to 9", 216, 104, 145, 17)
$radAny = GUICtrlCreateRadio("Use any valid character", 216, 128, 169, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Length", 24, 152, 161, 57)
$inpLength = GUICtrlCreateInput("8", 32, 176, 33, 24)
GUICtrlCreateLabel("characters", 72, 176, 67, 20)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Storage", 24, 224, 281, 105)
$radClipboard = GUICtrlCreateRadio("Copy password to clipboard", 32, 248, 193, 17)
GUICtrlSetState(-1, $GUI_Checked)
$radFile = GUICtrlCreateRadio("Save it to file", 32, 272, 113, 17)
$inpFile = GUICtrlCreateInput(@ScriptDir & "\pwd.txt", 150, 272, 130, 24)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateLabel("and generate", 64, 300, 84, 20)
$inpQuantity = GUICtrlCreateInput("1", 150, 300, 49, 24)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateLabel("password(s)", 208, 300, 78, 20)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$butGenerate = GUICtrlCreateButton("Generate", 320, 240, 75, 25)
GUICtrlSetState(-1, $GUI_FOCUS)
$butClose = GUICtrlCreateButton("Close", 320, 280, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
While Sleep(50)
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $butClose
ExitLoop
Case $butGenerate
_Generate()
Case $radClipboard
GUICtrlSetState($inpFile, $GUI_DISABLE)
GUICtrlSetState($inpQuantity, $GUI_DISABLE)
Case $radFile
GUICtrlSetState($inpQuantity, $GUI_ENABLE)
GUICtrlSetState($inpFile, $GUI_ENABLE)
EndSwitch
WEnd
Func _Generate()
Local $sString, $aPool, $sStringLine = ""
$aPool = StringRegExp(_Characters(), ".", 3)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To GUICtrlRead($inpQuantity)
$sString = ""
_ArrayShuffle($aPool)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To GUICtrlRead($inpLength)
$sString &= $aPool[Random(0, UBound($aPool) - 1, 1)]
Next
$sStringLine &= $sString
Next
_Output($sStringLine)
EndFunc
Func _Characters()
Local $sPool
If BitAnd(GuiCtrlRead($radAZ), $GUI_CHECKED) = $GUI_CHECKED Then
$sPool = _Case()
ElseIf BitAnd(GuiCtrlRead($rad09), $GUI_CHECKED) = $GUI_CHECKED Then
$sPool = $sNumbers
ElseIf BitAnd(GuiCtrlRead($radAZ09), $GUI_CHECKED) = $GUI_CHECKED Then
$sPool = _Case() & $sNumbers
Else ; $radAny
$sPool = _Case() & $sNumbers & $sSpecialCharacter
EndIf
Return $sPool
EndFunc
Func _Case()
Local $sPool
If BitAnd(GuiCtrlRead($radUpper), $GUI_CHECKED) = $GUI_CHECKED Then
$sPool = $sUpperLetter
ElseIf BitAnd(GuiCtrlRead($radLower), $GUI_CHECKED) = $GUI_CHECKED Then
$sPool = $sLowerLetter
Else
$sPool = $sUpperLetter & $sLowerLetter
EndIf
Return $sPool
EndFunc
Func _Output($sString)
Local $aStrings
$aStrings = StringRegExp($sString, '.{' & GUICtrlRead($inpLength) & '}', 3)
[/autoit] [autoit][/autoit] [autoit]If BitAnd(GuiCtrlRead($radFile), $GUI_CHECKED) = $GUI_CHECKED Then
$hFile = FileOpen(GuiCtrlRead($inpFile), 1)
For $i = 0 To UBound($aStrings) - 1
FileWrite($hFile, $aStrings[$i] & @CRLF)
Next
FileClose($hFile)
Else
ClipPut($aStrings[0])
MsgBox(4096, "Password generated", "The password " & @CRLF & @CRLF & $aStrings[0] & @CRLF & @CRLF & "was copied to your clipboard.")
EndIf
EndFunc
Func _ArrayShuffle(ByRef $aArray) ; Author: L3viathan2142 (l3viathan2142.de)
$n = UBound($aArray) - 1
while $n > 1
$k = Random(0, $n-1, 1)
$tmp = $aArray[$n]
$aArray[$n] = $aArray[$k]
$aArray[$k] = $tmp
$n -= 1
WEnd
EndFunc
LG,
Aca