Ich kenne mich mit den Indys gar nicht aus, aber liefert idHTTP1.Get(
URL, lStream);
garantiert immer die komplette Datei und nicht nur den aktuell empfangenen Teil? Bei den TServerSocket/TClientSocket ist dies Verhalten zumindest so und dort würde man dann mit dem Code durch das fmCreate ständig die bisher empfangenen Teile überschreiben.