anoniem Geplaatst: 26 februari 2002 Delen Geplaatst: 26 februari 2002 Hallo allemaal, Graag zou ik een functie willen hebben die voor mij alle mogelijke cobinaties van letters genereert. Dus zoals hieronder het voorbeeld laat zien: a aa ab aaa .. aabb abbb ... zzzzzz en dit van 1 tot 16 letters lang. Het hoeven alleen maar kleine letters te zijn, dus niet ook nog eens hoofdletters. Ik heb eigenlijk geen flauw idee hoe ik die functie moet maken, en hoe ik het moet aanpakken. Kan iemand mij helpen hoe ik dit aan moet pakken, of heeft iemand zo'n functie al thuis liggen? Alvaste bedankt. Barry Quote Link naar reactie
anoniem Geplaatst: 26 februari 2002 Auteur Delen Geplaatst: 26 februari 2002 Tekenreeksen genereren is niet zo moeilijk, maar waar wil je het resultaat hebben? Een functie kan maar 1 resultaat hebben? Een lijst gescheiden door vbCrLf? Even rekenen: 26^16 + 26^15 + 26^14 ... = hmm, dat krijg ik denk ik niet in 1 resultaat gepropt :smile: Je gebruikt de functie Chr(asciiwaarde) om een teken te typen. Om van a (alt+97) tot z (122) te loopen gebruik je For...Next: For i = 97 to 122 str = str & vbCrLf & Chr(i) Next i En dat kun je nesten, maar dat gaat geloof ik maar 8 niveaus diep. Hier een voorbeeldje met drie niveaus: [code:1:a2882c4adc] Open "C:letters.txt" For Output As #1 For a = 97 To 122 grp = Chr(a) Print #1, grp For b = 97 To 122 grp2 = grp & Chr(b) Print #1, grp2 For c = 97 To 122 Print #1, grp2 & Chr(c) Next c Next b Next a Close #1 [/code:1:a2882c4adc] Quote Link naar reactie
anoniem Geplaatst: 26 februari 2002 Auteur Delen Geplaatst: 26 februari 2002 Ik ben tot 15 nested for loops gekomen daarna crash-te VB.... Quote Link naar reactie
anoniem Geplaatst: 27 februari 2002 Auteur Delen Geplaatst: 27 februari 2002 Weet je zeker dat je voor 16 karakters wilt gaan? Ik heb onderstaande code gedraaid met 3, 4, 5 en 6 karakters lang, en de grootte van het bestand werd achtereenvolgens 91Kb, 2,8Mb, 86Mb en de laatste heb ik gestopt toen hij bij "lykbkr" was. Het bestand was toen al 1,2 Gb groot. Dit is dus iedere combinatie plus de "carriage return" en "line feed" karakters. Hier is de code: [code:1:f976d8cfb1]Option Explicit Private Const Aantal = 16 Private Sub Form_Load() Dim TekenReeks(1 To Aantal) As String Dim s As String Dim t As Integer Dim u As Integer For t = 1 To Aantal TekenReeks(t) = " " Next t Open "C:Lijst.txt" For Output As #1 Do s = "" For t = 1 To Aantal Select Case TekenReeks(t) Case " " TekenReeks(t) = "a" Exit For Case Is < "z" u = Asc(TekenReeks(t)) + 1 TekenReeks(t) = Chr(u) Exit For Case "z" TekenReeks(t) = "a" End Select Next t For u = Aantal To 1 Step -1 s = s & TekenReeks(u) Next u Trim (s) Print #1, s Loop While Right(s, Aantal) <> Right("zzzzzzzzzzzzzzzz", Aantal) Close #1 End Sub[/code:1:f976d8cfb1] Nogmaals, je kunt wel naar 16 karakters lengte gaan maar zorg dan voor voldoende schijfruimte en een heeeeeeeeel lang weekend. [img:f976d8cfb1]http://216.40.201.155/s/contrib/blackeye/stretch.gif[/img:f976d8cfb1] Quote Link naar reactie
anoniem Geplaatst: 27 februari 2002 Auteur Delen Geplaatst: 27 februari 2002 [quote:968f766d78] Op 26-02-2002 23:30, schreef Paulus: Tekenreeksen genereren is niet zo moeilijk, maar waar wil je het resultaat hebben? Een functie kan maar 1 resultaat hebben? Een lijst gescheiden door vbCrLf? Even rekenen: 26^16 + 26^15 + 26^14 ... = hmm, dat krijg ik denk ik niet in 1 resultaat gepropt :smile: Je gebruikt de functie Chr(asciiwaarde) om een teken te typen. Om van a (alt+97) tot z (122) te loopen gebruik je For...Next: For i = 97 to 122 str = str & vbCrLf & Chr(i) Next i En dat kun je nesten, maar dat gaat geloof ik maar 8 niveaus diep. Hier een voorbeeldje met drie niveaus: [code:1:968f766d78] Open "C:letters.txt" For Output As #1 For a = 97 To 122 grp = Chr(a) Print #1, grp For b = 97 To 122 grp2 = grp & Chr(b) Print #1, grp2 For c = 97 To 122 Print #1, grp2 & Chr(c) Next c Next b Next a Close #1 [/code:1:968f766d78] [/quote:968f766d78] Ik wil alle resultaten in een db stoppen, maar voordat ik dat doe, controleer ik via de spellingschecker van word, of het een correct woord is. Of weet iemand een mogelijkheid om de woorden die word gebruik in de spellingschecker uit te lezen, dus die dictionary??? Groetjes, Barry Quote Link naar reactie
anoniem Geplaatst: 8 maart 2002 Auteur Delen Geplaatst: 8 maart 2002 Ik weet niet of je er zelf al uit bent, maar ik was zelf ook wel benieuwd :smile: If Application.CheckSpelling(Word:=Selection.Text) = False Then Selection.Delete Quote Link naar reactie
anoniem Geplaatst: 8 maart 2002 Auteur Delen Geplaatst: 8 maart 2002 Inderdaad, ik heb het intussen draaiend gekregen op de manier zoals DarkScribe vertelde. Op het moment dat hij een print doet, heb ik een check via word of het een goed woord is, enzo ja dan een insert in een access db. Het werkt allemaal vlekkeloos, dus iedereen bedankt voor zijn/haar moeite.... Gr, Barry Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen