#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.0.0
 Author:         Aquaplant, mit Unterstützung von anno2008

 Script Function:
	Ermittelt die einzelnen Buchstaben aus einem Text und berechnet deren Häufigkeit und gibt zur Veranschaulichung ein (Torten-)Diagramm aus. Erstellt außerdem eine Ini in dem Script/Exe Ordner.(Funktioniert noch nicht ganz bei längeren Texten)

#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <ListboxConstants.au3>
#include <TabConstants.au3>
#include <Constants.au3>
Global $chrfrequency[27], $Buchstabe, $r, $g, $b
$haupt = GUICreate("Titel", 840, 525)
$Buchstabe = 0
GUISetState(@sw_show)
$eingabe = GUICtrlCreateEdit("Hier den zu analysierenden Text eingeben", 0,0,790, 475, $LBS_DISABLENOSCROLL + $WS_VSCROLL)
$menu = GUICtrlCreateMenu("Analysieren")
$menu2 = GUICtrlCreateMenuItem("Los", $menu)
$Grafik = GUICtrlCreateGraphic(320, 163, 200, 200)
Global $a=0, $bb=0, $c=0, $d=0, $e=0, $f=0, $gg=0, $h=0, $ii=0, $j=0, $k=0, $l=0, $m=0, $n=0, $o=0, $p=0, $q=0, $rr=0, $s=0, $t=0, $u=0, $v=0, $w=0, $x=0, $y=0, $z=0, $leerzeichen=0

#Region By anno2008 (einzelne Teile hatte ich auch, nur anders geschrieben --> viele Wege führen nach Rom
Func Analysieren()
	    $Buchstabe = StringSplit(StringLower(GUICtrlRead($eingabe)), "")
    GUICtrlSetState($eingabe, $GUI_Hide)
    For $i = 1 To UBound($Buchstabe) - 1
        For $j = 1 To 26
            If $Buchstabe[$i] = Chr($j + 96) Then
                $chrfrequency[$j] += 1
                ExitLoop
            ElseIf $Buchstabe[$i] = Chr(32) Then
                $chrfrequency[0] += 1
                ExitLoop
            EndIf
        Next
    Next

    GUISetState(@SW_LOCK)
    For $i = 0 To 26
        If $chrfrequency[$i] <> 0 Then
            $r = (Sin(($i + 15) / 96) + 1) * 256 ; von UEZ geklaut ohne zu wissen wie es funktioniert :)
            $g = (Sin(($i + 15) / 48) + 1) * 256 ;
            $b = (Sin(($i + 15) / 32) + 1) * 256 ;
            If $i = 0 Then
                GUICtrlSetGraphic($Grafik, $GUI_GR_COLOR, 0, "0x" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
                GUICtrlSetGraphic($Grafik, $GUI_GR_PIE, 50, 50, 150, 180, _getpercent($i))
            Else
                GUICtrlSetGraphic($Grafik, $GUI_GR_COLOR, 0, "0x" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
                GUICtrlSetGraphic($Grafik, $GUI_GR_PIE, 50, 50, 150, _getangle($i - 1), _getpercent($i))
            EndIf
        EndIf
    Next
    GUISetState(@SW_UNLOCK)
#EndRegion By anno2008

	$Buchstabe =1
	$Text = GUICtrlRead($eingabe)
	$Buchstabe = StringSplit($Text, "")
	$Worter = StringSplit($Text, " ")
	GUICtrlSetState($eingabe, $GUI_Hide)
	For $i = 1 To $Buchstabe[0] Step +1
		 If $Buchstabe[$i] = "a" Or $Buchstabe[$i] ="A" Then
			 $a = $a + 1
		 EndIf
		 If $Buchstabe[$i] = "b" Or $Buchstabe[$i] = "B" Then
			 $bb = $bb + 1
		 EndIf
		 If $Buchstabe[$i] = "c"  Or $Buchstabe[$i] ="C" Then
			 $c = $c + 1
		 EndIf
		 If $Buchstabe[$i] = "d"  Or $Buchstabe[$i] ="D" Then
			 $d = $d + 1
		 EndIf
		 If $Buchstabe[$i] = "e" Or $Buchstabe[$i] ="E" Then
			 $e = $e + 1
		 EndIf
		 If $Buchstabe[$i] = "f" Or $Buchstabe[$i] ="F" Then
			 $f = $f + 1
		 EndIf
		 If $Buchstabe[$i] = "g" Or $Buchstabe[$i] ="G" Then
			 $gg = $gg + 1
		 EndIf
		 If $Buchstabe[$i] = "h" Or $Buchstabe[$i] ="H" Then
			 $h = $h + 1
		 EndIf
		 If $Buchstabe[$i] = "i" Or $Buchstabe[$i] ="I" Then
			 $ii = $ii + 1
		 EndIf
		 If $Buchstabe[$i] = "j" Or $Buchstabe[$i] ="J" Then
			 $j = $j + 1
		 EndIf
		 If $Buchstabe[$i] = "k" Or $Buchstabe[$i] ="K" Then
			 $k = $k + 1
		 EndIf
		 If $Buchstabe[$i] = "l" Or $Buchstabe[$i] ="L" Then
			 $l = $l + 1
		 EndIf
		 If $Buchstabe[$i] = "m" Or $Buchstabe[$i] ="M" Then
			 $m = $m + 1
		 EndIf
		 If $Buchstabe[$i] = "n"  Or $Buchstabe[$i] ="N"Then
			 $n = $n + 1
		 EndIf
		 If $Buchstabe[$i] = "o" Or $Buchstabe[$i] ="O" Then
			 $o = $o + 1
		 EndIf
		 If $Buchstabe[$i] = "p"  Or $Buchstabe[$i] ="P"Then
			 $p = $p + 1
		 EndIf
		 If $Buchstabe[$i] = "q" Or $Buchstabe[$i] ="Q" Then
			 $q = $q + 1
		 EndIf
		 If $Buchstabe[$i] = "r" Or $Buchstabe[$i] ="R" Then
			 $rr = $rr + 1
		 EndIf
		 If $Buchstabe[$i] = "s" Or $Buchstabe[$i] ="S" Then
			 $s = $s + 1
		 EndIf
		 If $Buchstabe[$i] = "t" Or $Buchstabe[$i] = "T" Then
			 $t = $t + 1
		 EndIf
		 If $Buchstabe[$i] = "u" Or $Buchstabe[$i] ="U" Then
			 $u = $u + 1
		 EndIf
		 If $Buchstabe[$i] = "v" Or $Buchstabe[$i] ="V" Then
			 $v = $v + 1
		 EndIf
		 If $Buchstabe[$i] = "w"  Or $Buchstabe[$i] ="W"Then
			 $w = $w + 1
		 EndIf
		 If $Buchstabe[$i] = "x" Or $Buchstabe[$i] ="X" Then
			 $x = $x + 1
		 EndIf
		 If $Buchstabe[$i] = "y" Or $Buchstabe[$i] ="Y" Then
			 $y = $y + 1
		 EndIf
		 If $Buchstabe[$i] = "z" Or $Buchstabe[$i] ="Z" Then
			 $z = $z + 1
		 EndIf
		 If $Buchstabe[$i] = " " Then
			 $leerzeichen = $leerzeichen + 1
		 EndIf
	 Next
	 GUICtrlCreateLabel("A = "&$a, 0, 0)
	 GUICtrlCreateLabel("B = "&$bb, 0, 20)
	 GUICtrlCreateLabel("C = "&$c, 0, 40)
	 GUICtrlCreateLabel("D = "&$d, 0, 60)
	 GUICtrlCreateLabel("E = "&$e, 0, 80)
	 GUICtrlCreateLabel("F = "&$f, 0, 100)
	 GUICtrlCreateLabel("g = "&$Gg, 0, 120)
	 GUICtrlCreateLabel("H = "&$h, 0, 140)
	 GUICtrlCreateLabel("I = "&$ii, 0, 160)
	 GUICtrlCreateLabel("J = "&$j, 0, 180)
	 GUICtrlCreateLabel("K = "&$k, 0, 200)
	 GUICtrlCreateLabel("L = "&$l, 0, 220)
	 GUICtrlCreateLabel("M = "&$m, 0, 240)
	 GUICtrlCreateLabel("N = "&$n, 0, 260)
	 GUICtrlCreateLabel("O = "&$o, 0, 280)
	 GUICtrlCreateLabel("P = "&$p, 100, 0)
	 GUICtrlCreateLabel("Q = "&$q, 100, 20)
	 GUICtrlCreateLabel("R = "&$rr, 100, 40)
	 GUICtrlCreateLabel("S = "&$s, 100, 60)
	 GUICtrlCreateLabel("T = "&$t, 100, 80)
	 GUICtrlCreateLabel("U = "&$u, 100, 100)
	 GUICtrlCreateLabel("V = "&$v, 100, 120)
	 GUICtrlCreateLabel("W = "&$w, 100, 140)
	 GUICtrlCreateLabel("X = "&$x, 100, 160)
	 GUICtrlCreateLabel("Y = "&$y, 100, 180)
	 GUICtrlCreateLabel("Z = "&$z, 100, 200)
	 GUICtrlCreateLabel("Leerzeichen = "& $leerzeichen, 100, 220)
	 GUICtrlCreateLabel("===========", 100, 240)
	 GUICtrlCreateLabel("Wörter: "&$Worter[0], 100, 260)
	 GUICtrlCreateLabel("Buchstaben: "&$Buchstabe[0], 100, 280)
	 GUICtrlCreateLabel("A = "&Round($a/$Buchstabe[0]*100,2)&"%", 600, 0)
	 GUICtrlCreateLabel("B = "&Round($bb/$Buchstabe[0]*100,2)&"%", 600, 20)
	 GUICtrlCreateLabel("C = "&Round($c/$Buchstabe[0]*100,2)&"%", 600, 40)
	 GUICtrlCreateLabel("D = "&Round($d/$Buchstabe[0]*100,2)&"%", 600, 60)
	 GUICtrlCreateLabel("E = "&Round($e/$Buchstabe[0]*100,2)&"%", 600, 80)
	 GUICtrlCreateLabel("F = "&Round($f/$Buchstabe[0]*100,2)&"%", 600, 100)
	 GUICtrlCreateLabel("G = "&Round($Gg/$Buchstabe[0]*100,2)&"%", 600, 120)
	 GUICtrlCreateLabel("H = "&Round($h/$Buchstabe[0]*100,2)&"%", 600, 140)
	 GUICtrlCreateLabel("I = "&Round($ii/$Buchstabe[0]*100,2)&"%", 600, 160)
	 GUICtrlCreateLabel("J = "&Round($j/$Buchstabe[0]*100,2)&"%", 600, 180)
	 GUICtrlCreateLabel("K = "&Round($k/$Buchstabe[0]*100,2)&"%", 600, 200)
	 GUICtrlCreateLabel("L = "&Round($l/$Buchstabe[0]*100,2)&"%", 600, 220)
	 GUICtrlCreateLabel("M = "&Round($m/$Buchstabe[0]*100,2)&"%", 600, 240)
	 GUICtrlCreateLabel("N = "&Round($n/$Buchstabe[0]*100,2)&"%", 600, 260)
	 GUICtrlCreateLabel("O = "&Round($o/$Buchstabe[0]*100,2)&"%", 600, 280)
	 GUICtrlCreateLabel("P = "&Round($p/$Buchstabe[0]*100,2)&"%", 700, 0)
	 GUICtrlCreateLabel("Q = "&Round($q/$Buchstabe[0]*100,2)&"%", 700, 20)
	 GUICtrlCreateLabel("R = "&Round($rr/$Buchstabe[0]*100,2)&"%", 700, 40)
	 GUICtrlCreateLabel("S = "&Round($s/$Buchstabe[0]*100,2)&"%", 700, 60)
	 GUICtrlCreateLabel("T = "&Round($t/$Buchstabe[0]*100,2)&"%", 700, 80)
	 GUICtrlCreateLabel("U = "&Round($u/$Buchstabe[0]*100,2)&"%", 700, 100)
	 GUICtrlCreateLabel("V = "&Round($v/$Buchstabe[0]*100,2)&"%", 700, 120)
	 GUICtrlCreateLabel("W = "&Round($w/$Buchstabe[0]*100,2)&"%", 700, 140)
	 GUICtrlCreateLabel("X = "&Round($x/$Buchstabe[0]*100,2)&"%", 700, 160)
	 GUICtrlCreateLabel("Y = "&Round($y/$Buchstabe[0]*100,2)&"%", 700, 180)
	 GUICtrlCreateLabel("Z = "&Round($z/$Buchstabe[0]*100,2)&"%", 700, 200)
	 GUICtrlCreateLabel("Leerzeichen = "&Round($leerzeichen/$Buchstabe[0]*100,2)&"%", 700, 220)
	 GUICtrlCreateLabel("===========", 700, 240)
	 GUICtrlCreateLabel("Ergebnis: 100%", 700, 260)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "A", $a)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "B", $bb)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "C", $c)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "D", $d)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "E", $e)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "F", $f)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "G", $gg)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "H", $h)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "I", $ii)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "J", $j)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "K", $k)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "L", $l)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "M", $m)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "N", $n)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "O", $o)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "P", $p)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "Q", $q)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "R", $rr)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "S", $s)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "T", $t)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "U", $u)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "V", $v)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "W", $w)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "X", $x)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "Y", $y)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "Z", $z)
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "Leerzeichen", $leerzeichen)
     IniWrite(@scriptdir & "/Analysen.ini", $Text, "Wörter", $worter[0])
	 IniWrite(@scriptdir & "/Analysen.ini", $Text, "Buchstaben", $buchstabe[0])
EndFunc
#Region By anno2008
Func _getpercent($num)
    Local $counter = 0
    For $i = 0 To UBound($chrfrequency) - 1
        If $chrfrequency[$i] <> '' Then $counter += $chrfrequency[$i]
    Next
    Return Round($chrfrequency[$num] / $counter * 100 * (-3.6))
EndFunc   ;==>_getpercent

Func _getangle($num)
    Local $add = 0
    For $i = 0 To $num
        $add += _getpercent($i)
    Next
    Return 180 + $add
EndFunc   ;==>_getangle
 #EndRegion By anno2008
While 1
	 $Gui = GUIGetMsg()
	 Switch $gui
		 Case $GUI_EVENT_CLOSE
		 Exit
	 Case $menu2
		 If $Buchstabe <>0 Then
		 
		 Else
		 Analysieren()
		 EndIf
	EndSwitch
WEnd
 