Schalte mal in den Projektoptionen die Index-Prüfung an .... du hast mehr Daten im Stream, als in das Array passt und du dann auf einen Index zugreifst, den es garnicht gibt.
['A' .. 'C']
ist immer ein TSysCharSet, also
AnsiChar (leider gibt es kein WideCharSet)
somit dürfte I auch ein AnsiChar sein und die WriteBuffer ein Byte mehr schreiben, als es gibt ... auf dem Stack ist dort aber Speicher, womit es nicht knallt, aber quasi hast du dann ein jeweils Zufallsbyte im Stream.