Ich verstehe den Sinn dieser Zeile nicht:
slFile[i] := StringReplace(slFile[i], '"', '''', [rfReplaceAll, rfIgnoreCase]);
QuotedChar in der
CSV ist das ".
Warum das " durch das ' ersetzen?
Hast Du denn dann auch QuotedChar auf ' gesetzt?
Wenn nein, dann ist das (zusammen mit StrictDelimiter:=False) wie russisch Roulette.
Irgend wann geht der Schuss los, aber man weiß nicht, wen es wann trifft.