String ist ein typedef auf UnicodeString, und der benutzt das UTF16 Encoding. Es gibt einen UTF8String Datentyp, der verschiedene Konstruktorüberladungen hat, mit denen dann einfache Zuweisungen die Konvertierung zwischen UTF16 und UTF8 machen.
Sehe ich das richtig, dass du in Zeile 12 für jedes Zeichen einen Substring erstellst, und den per fprintf wegschreibst? Warum schreibst du nicht den ganzen String en-bloc, für einen 200 Zeichen langen String 200 Substrings mit einem Zeichen Länge zu erzeugen ist der Performance-Killer schlechthin. Angesehen davon, dass der Format Specifier %s ohnehin nicht auf wchar_t passt.
Da du C++ und nicht C machst rate ich dir zu std::wofstream. Oder mit den VCL Bordmitteln: Memo12->Lines->SaveToFile(...)