Seite 1 von 1

generateText (alle OS, Anfänger-Tip)

Verfasst: 24.01.2015 15:18
von Tommy
Generiert ein Text aus zufälligen Wörter mit Groß und Kleinschreibung und Vokalen und Konsonanten.
Brauche ich immer wenn ich ein EditorGadget habe und brauche Textvorlagen
dann will ich nicht auf meine Tasten hämmern oder irgendein Text aus dem Internet kopieren.
Damit geht es einfacher und schneller :allright:
Sieht zwar nach viel Code aus aber musste sein um etwas realische Wörter zu generieren.
Viel Spass :allright:

Code: Alles auswählen

;(c) Tommy
Procedure.s generateText(WordTotal)
  Protected i, j, Text.s, Word.s, WordLength, PhraseLength, PhraseNr, MaxVowelTotal, Uppercase, BCD.s = "bcdfghjklmnpqrstvwxyz", AEI.s = "aeiou", NextUppdercase = 1
 
  PhraseLength = Random(15, 3)
  For j=1 To WordTotal
    WordLength = Random(10, 2)
    Uppercase = Random(1)
    Word = ""
    PhraseNr + 1
    For i=1 To WordLength
      If MaxVowelTotal = 0
        MaxVowelTotal = Random(3, 1)
      EndIf
      MaxVowelTotal - 1
      If MaxVowelTotal = 0
        If Uppercase = 1 And i = 1
          Word = UCase(Mid(BCD, Random(21, 1), 1))
        Else
          Word + Mid(BCD, Random(21, 1), 1)
        EndIf
      Else
        If Uppercase = 1 And i = 1
          Word = UCase(Mid(AEI, Random(5, 1), 1))
        Else
          Word + Mid(AEI, Random(5, 1), 1)
        EndIf
      EndIf
    Next i
    If PhraseLength = PhraseNr
      Text + Word + "." + Chr(13)
      PhraseNr = 0
      NextUppdercase = 1
      PhraseLength = Random(15, 3)
    Else
      If NextUppdercase = 1
        Text + UCase(Left(Word, 1)) + Mid(Word, 2) + " "
        NextUppdercase = 0
      Else
        Text + Word + " "
      EndIf
    EndIf
  Next j
  ProcedureReturn Text
EndProcedure

Define event
OpenWindow(0, 0, 0, 600, 600, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(0, 0, 0, 600, 600)
SetGadgetText(0, generateText(500))

Repeat
  event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow

Re: generateText

Verfasst: 25.01.2015 01:24
von Vera
Hi Tommy,
Auf den ersten Blick sieht es wie Text aus :D - nur der Satzanfangsbuchstabe müßte noch groß geschrieben sein.

Im englischen Forum gibt es einen 'Freature Request' zu dem Thema eine Konstante für automatisch erzeugten Text zu haben
... mit diversen Lösungsvorschlägen: Constant request: #LOREM$

Vielleicht bringst Du Deine Lösung auch noch ein? :wink:

Gruß ~ Vera

Re: generateText (alle OS, Anfänger-Tip)

Verfasst: 27.01.2015 15:06
von Tommy
Anfangsbuchstabe wird jetzt groß geschrieben wenn ein Satz beginnt.

Code: Alles auswählen

;(c) Tommy
Procedure.s generateText(WordTotal)
  Protected i, j, Text.s, Word.s, WordLength, PhraseLength, PhraseNr, MaxVowelTotal, Uppercase, BCD.s = "bcdfghjklmnpqrstvwxyz", AEI.s = "aeiou", NextUppdercase = 1
 
  PhraseLength = Random(15, 3)
  For j=1 To WordTotal
    WordLength = Random(10, 2)
    Uppercase = Random(1)
    Word = ""
    PhraseNr + 1
    For i=1 To WordLength
      If MaxVowelTotal = 0
        MaxVowelTotal = Random(3, 1)
      EndIf
      MaxVowelTotal - 1
      If MaxVowelTotal = 0
        If Uppercase = 1 And i = 1
          Word = UCase(Mid(BCD, Random(21, 1), 1))
        Else
          Word + Mid(BCD, Random(21, 1), 1)
        EndIf
      Else
        If Uppercase = 1 And i = 1
          Word = UCase(Mid(AEI, Random(5, 1), 1))
        Else
          Word + Mid(AEI, Random(5, 1), 1)
        EndIf
      EndIf
    Next i
    If PhraseLength = PhraseNr
      Text + Word + "." + Chr(13)
      PhraseNr = 0
      NextUppdercase = 1
      PhraseLength = Random(15, 3)
    Else
      If NextUppdercase = 1
        Text + UCase(Left(Word, 1)) + Mid(Word, 2) + " "
        NextUppdercase = 0
      Else
        Text + Word + " "
      EndIf
    EndIf
  Next j
  ProcedureReturn Text
EndProcedure

Define event
OpenWindow(0, 0, 0, 600, 600, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(0, 0, 0, 600, 600)
SetGadgetText(0, generateText(500))

Repeat
  event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow