TStringList?
Eine für die Datei und eine für die (aktuelle) Zeile
Columns durchgehen und per Add die Spaltennamen in ZeilenListe
danach CommaText der ZeilenListe per Add in die CSVListe. (oder DelimitedText mit eigenem Delimiter und StrictDelimiter=True)
Nur je Zeile das Selber nochmal für die Feldinhalte
und am Ende noch ein SaveToFile.
CHR(13) ... meintest du nicht eher CHR(10) aka #10, oder wenigstens sLineBreak?
Einige Programme kommen mit #13 nicht klar.
OK, das alte Nodepad kommt mit der #10 nicht klar, aber fast alle Windowsprogramme kennen #13#10.
PS: Schau mal ob dein DataSet nicht sogar ein SaveToFile besitzt.
[edit]
Hat mir Uwe etwa zur Hälfte abgeguckt?