Frage: Kannst du den Code so compilieren, wie er ist? Also die Konsolen-Anwendung?
Der Fehler ist nämlich ganz logisch. In Delphi ist es
IMHO nicht möglich, die Schleifenariable einer For-Schleife noch innerhalb der Schleife zu verändern. Das soll verhindern, daß man mit den Indizes irgendeinen Unfug macht.
Wo das unbedint benötigt wird, solltest du eine While-Schleife verwenden.
Ich weiß nicht, ob das früher mal ging, kann ja sein, daß das in Delphi 3 oder so noch funktionierte und die Anwendung da geschrieben wurde. Also einfach die For-Schleife umbasteln, dann sollte es funktionieren.
Delphi-Quellcode:
i := 1;
While i <= NGramCount DO
BEGIN
NGram:=Copy(SearchStr,i,NGramLen);
IF (NGram[NGramLen-1]=' ') AND (NGram[1]<>' ') THEN
Inc(i,NGramLen-3)
ELSE
BEGIN
Inc(MaxMatch,NGramLen);
IF Pos(NGram,TextPara)>0 THEN
Inc(Count);
END;
END;
inc(i);
NGramMatch:=Count*NGramLen;
END;