Also du darfst kein Objekt der Klasse TStream direkt erzeugen sondern immer nur die Nachkommen
der TStream-Klasse (z.B. TMemoryStream, TStringStream, TFileStream, ...).
TStream ist ein abstrakte Basisklasse.
Du verwendest FreeAndNil in falscher Weise.
Nur bei Variablen, die länger leben als nur ein Prozedureaufruf, macht FreeAndNil überhaupt Sinn.
Hier reicht ein normales Free völlig aus.
Delphi-Quellcode:
// ungetestet
procedure TForm1.FormCreate(Sender: TObject);
var Res:TResourceStream;
begin
Res:=TResourceStream.Create(hInstance, 'res', PChar('ICO'));
Application.Icon.LoadFromStream(Res);
Res.Free;
//...
end;