Dieses Script soll die Häufigkeit von Buchstaben in einem Text zählen:
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Dim $Buchstaben[30]=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","ä","ö","ü","ß"]
Dim $Letters[UBound($Buchstaben)]
$Form1 = GUICreate("Buchstabenhäufigkeit", 450, 450)
$Label1 = GUICtrlCreateLabel("Gib einen Text ein, um die Häufigkeit der Buchstaben zu zählen:", 8, 8, 307, 17)
Dim $Label[UBound($Buchstaben)]
Dim $LabelBg[UBound($Buchstaben)]
For $i=0 To UBound($Buchstaben)-1
$LabelBg[$i]=GUICtrlCreateLabel("",335,8+$i*14,1,13)
GUICtrlSetBkColor(-1,0x9999ff)
$Label[$i]=GUICtrlCreateLabel("", 336, 8+$i*14,100,14)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
Next
$Edit1 = GUICtrlCreateEdit("", 8, 32, 305, 345,BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL,$ES_MULTILINE))
GUISetState(@SW_SHOW)
$OldText=""
[/autoit] [autoit][/autoit] [autoit]While 1
$NewText=GUICtrlRead($Edit1)
If $NewText<>$OldText Then
$OldText=$NewText
For $i=0 To UBound($Buchstaben)-1
$Letters[$i]=0
Next
Do
$Letter=StringLeft($NewText,1)
For $i=0 To UBound($Buchstaben)-1
If $Buchstaben[$i]=$Letter Then
$Letters[$i]+=1
EndIf
Next
$NewText=StringTrimLeft($NewText,1)
Until StringLen($NewText)=0
$LettersSum=0
For $i=0 To UBound($Buchstaben)-1
$LettersSum+=$Letters[$i]
Next
For $i=0 To UBound($Buchstaben)-1
GUICtrlSetData($Label[$i],StringUpper($Buchstaben[$i])&": "&$Letters[$i])
GUICtrlSetPos($LabelBg[$i],335,8+$i*14,$Letters[$i]*(100/$LettersSum),13) ;<<<<<<<<<<<<<< Problem-Zeile
Next
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Mit $LabelBg will ich ein Balkendiagramm der Häufigkeit anzeigen lassen. Allerdings verhalten sich die Breiten der Balken nicht korrekt. Warum?