Hi,
Ich hab gerade bei der einen Fehler in der Procedure QSExplode endeckt,
und zwar kommt es manchmal zu einem "Fehler bei Bereichsprüfung"
Delphi-Quellcode:
Procedure TStringDivider.QSExplode(Const aText: String; aItems: TStrings);
// ...
While i <= k Do Begin
If (fPatternFirstChar = aText[i]) And (fPatternLastChar = aText[i + fPatternLength1]) Then
If (fPatternLength < 3) Or CompareMem(@aText[i + 1],fPatternPtr,fPatternLength2) Then Begin
aItems.Add(Copy(aText,iTextStart,i - iTextStart));
inc(i,fPatternLength);
iTextStart := i;
Continue;
End;
inc(i,fSkip[aText[i + fPatternLength]]); //<-- Hier Tritt der Fehler auf
End;
// ...
Ich hab mal ein Beispielprojekt gemacht den Fehler zu veranschaulichen.