Вы не инициализируете компонент HTTP. Поскольку это глобальная переменная, она будет автоматически инициализирована как nil
.
Когда вы звоните HTTP.Post('http://dcrypt.it/decrypt/upload', Params, Stream);
, он не сломается сразу по месту вызова. Вы вызываете его по ссылке nil
, поэтому он вызывает AV, как только получает доступ к некоторому внутреннему полю или пытается вызвать виртуальный метод.
Вы должны создать компонент HTTP, прежде чем использовать его:
HTTP := TIdHTTP.Create(nil);
try
...
finally
HTTP.Free;
end;
Кроме того, хорошей практикой является то, что вам следует избегать использования глобальных переменных. Вы можете и должны объявить все необходимые переменные как локальные. И убедитесь, что вы отпустите все после того, как закончите.