Seite 3 von 7
Verfasst: 17.07.2007 15:47
von STARGÅTE
ich nehme dir die Arbeit ab ^^, habe ja sonst nix zu tun
Code: Alles auswählen
Global MyAlphabet$
MyAlphabet$ = "ABC123"
;MyAlphabet$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
Procedure Zeichenkette(String$,n)
If n = 1
For a = 1 To Len(MyAlphabet$)
Str$ = Mid(MyAlphabet$,a,1)
Debug String$+Str$
Next
Else
For a = 1 To Len(MyAlphabet$)
Str$ = Mid(MyAlphabet$,a,1)
Zeichenkette(String$+Str$,n-1)
Next
EndIf
EndProcedure
Debug "--------------------------------------"
Debug "1 Zeichen..."
Debug "--------------------------------------"
Zeichenkette("",1)
Debug "--------------------------------------"
Debug "2 Zeichen..."
Debug "--------------------------------------"
Zeichenkette("",2)
Debug "--------------------------------------"
Debug "3 Zeichen"
Debug "--------------------------------------"
Zeichenkette("",3)
Debug "--------------------------------------"
Debug "4 Zeichen"
Debug "--------------------------------------"
Zeichenkette("",4)
Verfasst: 17.07.2007 18:03
von rolaf
> For a = 1 To Len(MyAlphabet$)
Bei tausenden Schleifendurchläufen ist das Unklug. Besser:
Gerade wenn die Passwörter länger werden spart das massig Laufzeit, weil nicht bei jedem Schleifendurchlauf "Len" aufgerufen wird.
Verfasst: 17.07.2007 18:14
von PureBasic4.0
@Falo: OK. Hast recht.
Laurin hat geschrieben:Tu das Mid() in ne Prozedur und rufe die innerhalb deiner Schleife so oft auf, wie das Passwort lang sein soll.
Was bringt es mir, wenn ich das Mid in eine Procedure schreibe?
Code: Alles auswählen
Procedure.s GetString(String$,Pos)
Text$ = Mid(String$,StartPos,1)
ProcedureReturn Text$
EndProcedure
Ich meine, dann kann ich auch Mid() einfach so aufrufen. Was meinst du mit der Aussage? Was soll ich in die Procedure reinschreiben? Lass doch endlich mal die Katze aus dem Sack

Verfasst: 17.07.2007 18:14
von vonTurnundTaxis
Was seid denn ihr für welche ... nehmt einem Skript-Kiddie seine dümmliche Arbeit ab.
Verfasst: 17.07.2007 18:15
von PureBasic4.0
@vTUT: Was war denn das jetzt für ne Aussage? Irgendwie motzt du in letzter Zeit nur noch rum. Ich stelle eine anständige Frage, schreibe den Code sogar größtenteils selbst (während mir die anderen Tips geben, wie ich das zu machen habe) und du beschwerst dich.

Verfasst: 17.07.2007 18:37
von STARGÅTE
naja damit es schneller läuft wäre das hier bassen:
Code: Alles auswählen
Global MyAlphabet$
MyAlphabet$ = "ABC123"
;MyAlphabet$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
Procedure Zeichenkette(String$,n)
l = Len(MyAlphabet$)-1
If n = 1
For a = 0 To l
Str$ = PeekS(@MyAlphabet$+a,1)
Debug String$+Str$
Next
Else
For a = 0 To l
Str$ = PeekS(@MyAlphabet$+a,1)
Zeichenkette(String$+Str$,n-1)
Next
EndIf
EndProcedure
Debug "--------------------------------------"
Debug "1 Zeichen..."
Debug "--------------------------------------"
Zeichenkette("",1)
Debug "--------------------------------------"
Debug "2 Zeichen..."
Debug "--------------------------------------"
Zeichenkette("",2)
Debug "--------------------------------------"
Debug "3 Zeichen"
Debug "--------------------------------------"
Zeichenkette("",3)
Debug "--------------------------------------"
Debug "4 Zeichen"
Debug "--------------------------------------"
Zeichenkette("",4)
Verfasst: 17.07.2007 18:40
von PureBasic4.0
@Stargate: Danke, aber da ist doch schonwieder ein PeekS() drin. Könntest du mir mal bitte erklären, warum der da drin ist, und warum man dafür keine normalen Strings benutzen kann? Performance?
Und für was ist die Variable n?
Verfasst: 17.07.2007 18:45
von STARGÅTE
ist das gleiche wie
@String$ gibt ja die Position der Zeichenkette, die im Speicher steht
und nun ließt er also negau ein 1Byte-Länge aus dem Speicher, jenach dem wie groß Position ist, ließt er etwas weiter hinten
Mit dem Unterschied das Mid bei 1 anfängt und bei PeekS ist das erste Zeichen bei "+0"
Ich glaube ich hatte damals n Test gemacht und da war PeekS schneller weil es direkt aus dem Speicher ließt.
Verfasst: 17.07.2007 18:46
von PureBasic4.0
ok. danke @all

Verfasst: 22.07.2007 19:55
von PureBasic4.0
Danke, es funktioniert alles ,aber jetzt steh ich echt auf dem Schlauch:
Geht es irgendwie, dass man wieder an derselben Stelle weitermachen kann, wo man aufgehört (Programm schließen,...) hat? Klar - speichern, wo man war, aber wie kann das programm dann wieder dahin springen wo es war?