Code: Alles auswählen
Wort$ = "Apfelbaum"
Eingabe$ = "Ahpflpaumen"
Procedure.s FehlerAnalyse(ori$, check$)
Define.w os = 1, ol = 1, cs = 1, cl = 1
LenO.b = Len(ori$) : LenC.b = Len(check$)
If LenC > LenO ;{ max. Buchstabenzahl
LenWort.b = LenC
Else
LenWort.b = LenO
EndIf ;}
For i=1 To LenWort
If Len(Mid(ori$, os, ol)) < Len(Mid(check$, cs, cl)) ;{ zuviele Buchstaben (Wortende)
Debug "------------------"
Debug "zuviele Buchstaben ("+Str(cs+cl-1)+"-"+Str(LenC)+"): '" + Mid(check$, cs+cl-1, LenC-cs-cl+2)+"'"
fehler$ + "zuviele Buchstaben ("+Str(cs+cl-1)+"-"+Str(LenC)+"): "+Mid(check$, cs+cl-1, LenC-cs-cl+2)
Break
;}
ElseIf Len(Mid(ori$, os, ol)) > Len(Mid(check$, cs, cl)) ;{ zu wenig Buchstaben (Wortende)
Debug "------------------"
Debug "zu wenig Buchstaben: '" + Mid(ori$, os+ol-1, LenO-os-ol+2)+"'"
fehler$ + "zu wenig Buchstaben : "+Mid(ori$, os+ol-1, LenO-os-ol+2)
Break
;}
ElseIf Mid(ori$, os, ol) = Mid(check$, cs, cl) ;{ Übereinstimmung
ol + 1 : cl + 1
;}
Else ;{ Fehler
Debug "------------------"
Debug "Fehler: '"+Mid(ori$, os, ol)+"' <> '"+Mid(check$, cs, cl)+"'"
Debug "------------------"
If Mid(ori$, os, ol) = Mid(check$, cs, cl-1) + Mid(check$, cs+cl, 1) ;{ Buchstabe zuviel
Debug "zuviel ("+Str(cs+cl-1)+"): '"+ Mid(ori$, os, ol)+"' = '"+Mid(check$, cs, cl-1)+"||"+Mid(check$, cs+cl, 1)+"'"
fehler$ + "Buchstabe zuviel ("+Str(cs+cl-1)+"): " + Mid(check$,cs+cl-1,1) +" "+ Chr(10)
os + ol - 1 : cs + cl : ol = 1 : cl = 1
;} ----------
ElseIf Mid(ori$, os, ol+1) = Mid(check$, cs, cl-1) + Mid(ori$, os+ol-1, 1) + Mid(check$, cs+cl-1, 1) ;{ Buchstabe zuwenig
Debug "fehlt ("+Str(cs+cl-2)+"-"+Str(cs+cl-1)+"): '"+ Mid(ori$, os, ol+1) +"' = '"+Mid(check$, cs, cl-1) +"|"+ Mid(ori$, os+ol-1, 1) +"|"+ Mid(check$, cs+cl-1, 1)
fehler$ + "Buchstabe fehlt ("+Str(cs+cl-2)+"-"+Str(cs+cl-1)+"): " + Mid(ori$, os+ol-1, 1) +" "+ Chr(10)
os + ol : cs + cl - 1 : ol = 1 : cl = 1
;}
Else ;{ falscher Buchstabe
Debug "falsch ("+Str(cs+cl-1)+"): '"+ Mid(check$, cs+cl-1, 1)+"'"
fehler$ + "falscher Buchstabe ("+Str(cs+cl-1)+"): " + Mid(check$, cs+cl-1, 1) +" "+ Chr(10)
os + ol : cs + cl : ol = 1 : cl = 1
;} ----------
EndIf
;}
EndIf
Next
ProcedureReturn fehler$
EndProcedure
If Wort$ = Trim(Eingabe$)
Debug "--- Richtig ---"
Else
Debug Wort$+" <> "+Eingabe$
result$ = FehlerAnalyse(Wort$, Eingabe$)
Debug "----------"
If result$
MessageRequester(" Fehleranalyse", result$, #MB_OK|#MB_ICONWARNING)
EndIf
EndIf