Hallo
1) Wenn du eine Procedur mit Var-Parameter hast, kannst du für diesen Parameter nur Variablen übergeben und keine konstanten Werte ('http://www.google.com' ist z.B. ein konstanter Wert).
2) Lösen kannst du DAS Problem indem du das var vor deinem Parameter wegmachst, weil es in diesem Fall eigentlich unnötig ist:
function load_picture(url : String) : TGIFImage;
3) .. Funktionieren wird dein Code trotzdem nicht, weil du das in load_picture erstellte GIF direkt wieder freigibst.
Die Funktion sollte so aussehen:
Delphi-Quellcode:
function load_picture(
url :
String) : TGIFImage;
var
Stream : TMemoryStream;
GIF : TGIFImage;
begin
if url <> '
'
then
begin
Stream := TMemoryStream.Create;
try
Form1.IdHTTP1.Get(
url, Stream);
Stream.Position := 0;
GIF := TGIFImage.Create;
GIF.LoadFromStream(stream);
Result := GIF;
finally
Stream.Free;
end;
end;
end;
Du könntest/solltest die procedure vllt. auch als Methode von TForm1 definieren. Dann müsstest du nicht Form1.IdHTTP1.Get schreiben sondern nur IdHTTP1.Get, was dann auch mit jeder Instanz von TForm1 funktioniert und nicht nur mit der Variable Form1.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."