Здесь нужно запомнить одно простое правило, если используемая функция или процедура в своих параметрах для запуска содержит ключевое слово
var, то с этой переменной нужно работать не на прямую, а передавать ей переменную соответствующего типа, поскольку после того как процедура или функция эта отработает, в "заваренной" переменной будет лежать выходной результат. Это действует всегда и везде.
Конкретно с примером - ведь начиналось всё правильно, зачемто отключена s типа string, в код передается константная величина в одинарных кавычках ('*.png'), которую нельзя изменить во время работы, вот компилятор как раз на это (E2197) и ругается. А решается очень просто
Код:
procedure TForm1.Button5Click(Sender: TObject);
var
s:string;
begin
// edit1.Text должен содержать ответ на GET запрос, содержащий адрес картинки на сервере в сети
// используем основной результат функции который по определению типа boolean
if GetCacheFileName(edit1.Text, s) then
Image1.Picture.LoadFromFile(s) //вернула true, т.е. файл в кэше есть, в s её имя на диске
else
ShownMessage('Файл получить не удалось, пичалька'); // вернула false, нету файла
end;