В чём здесь принципиальная разница?
Первый расчитан на фиксированную длину строки 64 символа.
Второй на переменную длинну строки dwBytesRead[0], но не больше максимальной длинны 256.
Последнего ифа нет поскольку первые три используются для досрочного выхода из цикла когда длинна строки не кратна 4 байтам в которые впихивается последние 1\2\3 символа.
Вроде так.....
'Групповые файловые операции'
И
's_wininet'Ну кроме очевидных вещей...
Более всего интересует различие в счётчиках: 256 и 64
и отсутствие if(StringLen(text)==dwBytesRead[0]) break; в последней строке второго кода...